[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r15923 - in gnunet/src: include util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r15923 - in gnunet/src: include util |
Date: |
Mon, 11 Jul 2011 16:35:05 +0200 |
Author: grothoff
Date: 2011-07-11 16:35:04 +0200 (Mon, 11 Jul 2011)
New Revision: 15923
Modified:
gnunet/src/include/gnunet_os_lib.h
gnunet/src/util/os_installation.c
Log:
bincheck
Modified: gnunet/src/include/gnunet_os_lib.h
===================================================================
--- gnunet/src/include/gnunet_os_lib.h 2011-07-11 14:15:04 UTC (rev 15922)
+++ gnunet/src/include/gnunet_os_lib.h 2011-07-11 14:35:04 UTC (rev 15923)
@@ -341,15 +341,15 @@
/**
- * Check whether the suid bit is set on a file. Attempts to find the
- * file using the current PATH environment variable as a search path.
- * On W32, if the binary exists, this function tests if we are running
- * with administrative rights (sufficient to create RAW sockets).
+ * Check whether an executable exists and possibly
+ * if the suid bit is set on the file.
+ * Attempts to find the file using the current
+ * PATH environment variable as a search path.
*
* @param binary the name of the file to check
* @return GNUNET_YES if the file is SUID,
- * GNUNET_NO if not,
- * GNUNET_SYSERR on error
+ * GNUNET_NO if not SUID (but binary exists)
+ * GNUNET_SYSERR on error (no such binary or not executable)
*/
int
GNUNET_OS_check_helper_binary (const char *binary);
Modified: gnunet/src/util/os_installation.c
===================================================================
--- gnunet/src/util/os_installation.c 2011-07-11 14:15:04 UTC (rev 15922)
+++ gnunet/src/util/os_installation.c 2011-07-11 14:35:04 UTC (rev 15923)
@@ -438,14 +438,15 @@
/**
- * Check whether the suid bit is set on a file.
+ * Check whether an executable exists and possibly
+ * if the suid bit is set on the file.
* Attempts to find the file using the current
* PATH environment variable as a search path.
*
* @param binary the name of the file to check
* @return GNUNET_YES if the file is SUID,
- * GNUNET_NO if not,
- * GNUNET_SYSERR on error
+ * GNUNET_NO if not SUID (but binary exists)
+ * GNUNET_SYSERR on error (no such binary or not executable)
*/
int
GNUNET_OS_check_helper_binary (const char *binary)
@@ -477,11 +478,10 @@
#endif
if (p == NULL)
{
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
- "tcp",
- _("Could not find binary `%s' in PATH!\n"),
- binary);
- return GNUNET_NO;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Could not find binary `%s' in PATH!\n"),
+ binary);
+ return GNUNET_SYSERR;
}
if (0 != STAT (p, &statbuf))
{
@@ -492,20 +492,28 @@
GNUNET_free (p);
return GNUNET_SYSERR;
}
- GNUNET_free (p);
#ifndef MINGW
if ( (0 != (statbuf.st_mode & S_ISUID)) &&
(statbuf.st_uid == 0) )
- return GNUNET_YES;
- return GNUNET_NO;
+ {
+ GNUNET_free (p);
+ return GNUNET_YES;
+ }
+ if (0 == ACCESS (p, X_OK))
+ {
+ GNUNET_free (p);
+ return GNUNET_NO;
+ }
+ GNUNET_free (p);
+ return GNUNET_SYSERR;
#else
+ GNUNET_free (p);
rawsock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
if (INVALID_SOCKET == rawsock)
{
DWORD err = GetLastError ();
- GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
- "tcp",
- "socket (AF_INET, SOCK_RAW, IPPROTO_ICMP) failed! GLE =
%d\n", err);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "socket (AF_INET, SOCK_RAW, IPPROTO_ICMP) failed! GLE =
%d\n", err);
return GNUNET_NO; /* not running as administrator */
}
closesocket (rawsock);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r15923 - in gnunet/src: include util,
gnunet <=