Wireshark mailing list archives
Re: Compilation failure - privileges.c: In function 'relinquish_special_privs_perm' - ignoring return value of 'setresgid', declared with attribute warn_unused_result [-Werror=unused-result]
From: Evan Huus <eapache () gmail com>
Date: Sat, 29 Sep 2012 17:49:33 -0400
On Sat, Sep 29, 2012 at 4:05 PM, Bill Meier <wmeier () newsguy com> wrote:
On 8/21/2012 2:19 AM, Guy Harris wrote:On Aug 20, 2012, at 12:49 PM, Kaul wrote:If it were git, I'm sure I could easily use 'git bisect' and find the issue.As Evan Huus indicated, what you probably need to bisect is compiler updates. :-) The offending routine is probably relinquish_special_privs_perm() (which has failed to check the return value of setresuid() and setresgid() since at least 2007), and, if those calls were to fail, it's not clear what Wireshark should do, so it's not clear that relinquish_special_privs_perm() should return a success/failure indication, and it's not clear that there's anything to do if any of the set.*id routines return anything other than 0, so perhaps the right fix is to cast the return values to void, so as to tell the compiler "yes, I'm deliberately ignoring the return value, because there's not much to do if they fail". I suppose we *could* have relinquish_special_privs_perm() return a success/failure indication, and have its *callers* cheerfully ignore the return value, or print a warning message/pop up a warning dialog if they fail (if they fail, then we were started with special privileges, but those privileges weren't sufficient to relinquish them, in which case the developers should be notified so we can figure out whether there's any way to relinquish them in that situation).I've started getting this warning also (F17...) (maybe just now since today is the first time I've done a 'make clean' etc in a while). So: 1. There's a long thread (which started Jul 24,2012) about "[PATCH] Declare set*id with warn_unused_result" at http://old.nabble.com/-PATCH--Declare-set*id-with-warn_unused_result-td34204904.html 2. Doing a (void)... as suggested by Guy above doesn't prevent the error. Using a hack like 'if(!setresgid() {}' does work but seems ugly; returning a success/failure indication to the callers of relinquish_special_privs_perm() seems like too much work. My inclination: test the return value of the various set*id calls and if fail, do g_error(). Thoughts ?
I'd be tempted to make it a g_warning() since Wireshark will *probably* keep working despite the problem. The general approach seems sound though. ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Re: Compilation failure - privileges.c: In function 'relinquish_special_privs_perm' - ignoring return value of 'setresgid', declared with attribute warn_unused_result [-Werror=unused-result] Bill Meier (Sep 29)
- Re: Compilation failure - privileges.c: In function 'relinquish_special_privs_perm' - ignoring return value of 'setresgid', declared with attribute warn_unused_result [-Werror=unused-result] Evan Huus (Sep 29)