Run through indent, use /* */ style comments instead of //
No binary (build failed)
—
(log yok)
| @@ -59,22 +59,22 @@ static int config_ok; | |
| #define CONFIG_FILE "/etc/busybox.conf" | |
| - | // applets [] is const, so we have to define this "override" structure |
| + | /* applets [] is const, so we have to define this "override" structure */ |
| struct BB_suid_config { | |
| struct BB_applet *m_applet; | |
| uid_t m_uid; | |
| gid_t m_gid; | |
| mode_t m_mode; | |
| - | |
| + | |
| struct BB_suid_config *m_next; | |
| }; | |
| static struct BB_suid_config *suid_config; | |
| - | #endif // CONFIG_FEATURE_SUID_CONFIG |
| + | #endif /* CONFIG_FEATURE_SUID_CONFIG */ |
| - | #endif // CONFIG_FEATURE_SUID |
| + | #endif /* CONFIG_FEATURE_SUID */ |
| @@ -142,7 +142,7 @@ void run_applet_by_name(const char *name, int argc, char **argv) | |
| #ifdef CONFIG_FEATURE_SUID | |
| check_suid ( applet_using ); | |
| #endif | |
| - | |
| + | |
| exit((*(applet_using->main)) (argc, argv)); | |
| } | |
| /* Just in case they have renamed busybox - Check argv[1] */ | |
| @@ -157,17 +157,17 @@ void run_applet_by_name(const char *name, int argc, char **argv) | |
| #ifdef CONFIG_FEATURE_SUID_CONFIG | |
| - | // check if u is member of group g |
| + | /* check if u is member of group g */ |
| static int ingroup ( uid_t u, gid_t g ) | |
| { | |
| struct group *grp = getgrgid ( g ); | |
| - | |
| + | |
| if ( grp ) { | |
| char **mem; | |
| - | |
| + | |
| for ( mem = grp-> gr_mem; *mem; mem++ ) { | |
| struct passwd *pwd = getpwnam ( *mem ); | |
| - | |
| + | |
| if ( pwd && ( pwd-> pw_uid == u )) | |
| return 1; | |
| } | |
| @@ -180,43 +180,43 @@ static int ingroup ( uid_t u, gid_t g ) | |
| void check_suid ( struct BB_applet *applet ) | |
| { | |
| - | uid_t ruid = getuid ( ); // real [ug]id |
| + | uid_t ruid = getuid ( ); /* real [ug]id */ |
| uid_t rgid = getgid ( ); | |
| - | |
| + | |
| #ifdef CONFIG_FEATURE_SUID_CONFIG | |
| if ( config_ok ) { | |
| struct BB_suid_config *sct; | |
| - | |
| + | |
| for ( sct = suid_config; sct; sct = sct-> m_next ) { | |
| if ( sct-> m_applet == applet ) | |
| break; | |
| } | |
| if ( sct ) { | |
| mode_t m = sct-> m_mode; | |
| - | |
| - | if ( sct-> m_uid == ruid ) // same uid |
| + | |
| + | if ( sct-> m_uid == ruid ) /* same uid */ |
| m >>= 6; | |
| - | else if (( sct-> m_gid == rgid ) || ingroup ( ruid, sct-> m_gid )) // same group / in group |
| + | else if (( sct-> m_gid == rgid ) || ingroup ( ruid, sct-> m_gid )) /* same group / in group */ |
| m >>= 3; | |
| - | if (!( m & S_IXOTH )) // is x bit not set ? |
| + | if (!( m & S_IXOTH )) /* is x bit not set ? */ |
| error_msg_and_die ( "You have no permission to run this applet!" ); | |
| - | |
| - | if (( sct-> m_mode & ( S_ISGID | S_IXGRP )) == ( S_ISGID | S_IXGRP )) { // *both* have to be set for sgid |
| + | |
| + | if (( sct-> m_mode & ( S_ISGID | S_IXGRP )) == ( S_ISGID | S_IXGRP )) { /* *both* have to be set for sgid */ |
| if ( setegid ( sct-> m_gid )) | |
| error_msg_and_die ( "BusyBox binary has insufficient rights to set proper GID for applet!" ); | |
| } | |
| else | |
| - | setgid ( rgid ); // no sgid -> drop |
| - | |
| + | setgid ( rgid ); /* no sgid -> drop */ |
| + | |
| if ( sct-> m_mode & S_ISUID ) { | |
| if ( seteuid ( sct-> m_uid )) | |
| error_msg_and_die ( "BusyBox binary has insufficient rights to set proper UID for applet!" ); | |
| } | |
| else | |
| - | setuid ( ruid ); // no suid -> drop |
| + | setuid ( ruid ); /* no suid -> drop */ |
| } | |
| - | else { // default: drop all priviledges |
| + | else { /* default: drop all priviledges */ |
| setgid ( rgid ); | |
| setuid ( ruid ); | |
| } | |
| @@ -225,7 +225,7 @@ void check_suid ( struct BB_applet *applet ) | |
| else { | |
| #ifndef CONFIG_FEATURE_SUID_CONFIG_QUIET | |
| static int onetime = 0; | |
| - | |
| + | |
| if ( !onetime ) { | |
| onetime = 1; | |
| fprintf ( stderr, "Using fallback suid method\n" ); | |
| @@ -239,7 +239,7 @@ void check_suid ( struct BB_applet *applet ) | |
| error_msg_and_die ( "This applet requires root priviledges!" ); | |
| } | |
| else if ( applet-> need_suid == _BB_SUID_NEVER ) { | |
| - | setgid ( rgid ); // drop all priviledges |
| + | setgid ( rgid ); /* drop all priviledges */ |
| setuid ( ruid ); | |
| } | |
| } | |
| @@ -258,90 +258,90 @@ int parse_config_file ( void ) | |
| int lc = 0; | |
| suid_config = 0; | |
| - | |
| - | // is there a config file ? |
| + | |
| + | /* is there a config file ? */ |
| if ( stat ( CONFIG_FILE, &st ) == 0 ) { | |
| - | // is it owned by root with no write perm. for group and others ? |
| + | /* is it owned by root with no write perm. for group and others ? */ |
| if ( S_ISREG( st. st_mode ) && ( st. st_uid == 0 ) && (!( st. st_mode & ( S_IWGRP | S_IWOTH )))) { | |
| - | // that's ok .. then try to open it |
| + | /* that's ok .. then try to open it */ |
| f = fopen ( CONFIG_FILE, "r" ); | |
| if ( f ) { | |
| char buffer [256]; | |
| int section = 0; | |
| - | |
| + | |
| while ( fgets ( buffer, sizeof( buffer ) - 1, f )) { | |
| char c = buffer [0]; | |
| char *p; | |
| - | |
| + | |
| lc++; | |
| - | |
| + | |
| p = strchr ( buffer, '#' ); | |
| if ( p ) | |
| *p = 0; | |
| p = buffer + xstrlen ( buffer ); | |
| while (( p > buffer ) && isspace ( *--p )) | |
| *p = 0; | |
| - | |
| + | |
| if ( p == buffer ) | |
| continue; | |
| - | |
| + | |
| if ( c == '[' ) { | |
| p = strchr ( buffer, ']' ); | |
| - | |
| - | if ( !p || ( p == ( buffer + 1 ))) // no matching ] or empty [] |
| + | |
| + | if ( !p || ( p == ( buffer + 1 ))) /* no matching ] or empty [] */ |
| parse_error ( "malformed section header" ); | |
| *p = 0; | |
| - | |
| + | |
| if ( strcasecmp ( buffer + 1, "SUID" ) == 0 ) | |
| section = 1; | |
| else | |
| - | section = -1; // unknown section - just skip |
| + | section = -1; /* unknown section - just skip */ |
| } | |
| else if ( section ) { | |
| switch ( section ) { | |
| - | case 1: { // SUID |
| + | case 1: { /* SUID */ |
| int l; | |
| struct BB_applet *applet; | |
| - | p = strchr ( buffer, '=' ); // <key>[::space::]*=[::space::]*<value> |
| - | |
| - | if ( !p || ( p == ( buffer + 1 ))) // no = or key is empty |
| + | p = strchr ( buffer, '=' ); /* <key>[::space::]*=[::space::]*<value> */ |
| + | |
| + | if ( !p || ( p == ( buffer + 1 ))) /* no = or key is empty */ |
| parse_error ( "malformed keyword" ); | |
| - | |
| + | |
| l = p - buffer; | |
| - | while ( isspace ( buffer [--l] )) { } // skip whitespace |
| - | |
| + | while ( isspace ( buffer [--l] )) { } /* skip whitespace */ |
| + | |
| buffer [l+1] = 0; | |
| - | |
| + | |
| if (( applet = find_applet_by_name ( buffer ))) { | |
| struct BB_suid_config *sct = xmalloc ( sizeof( struct BB_suid_config )); | |
| - | |
| + | |
| sct-> m_applet = applet; | |
| sct-> m_next = suid_config; | |
| suid_config = sct; | |
| - | |
| - | while ( isspace ( *++p )) { } // skip whitespace |
| - | |
| + | |
| + | while ( isspace ( *++p )) { } /* skip whitespace */ |
| + | |
| sct-> m_mode = 0; | |
| - | |
| + | |
| switch ( *p++ ) { | |
| case 'S': sct-> m_mode |= S_ISUID; break; | |
| - | case 's': sct-> m_mode |= S_ISUID; // no break |
| + | case 's': sct-> m_mode |= S_ISUID; /* no break */ |
| case 'x': sct-> m_mode |= S_IXUSR; break; | |
| case '-': break; | |
| default : parse_error ( "invalid user mode" ); | |
| } | |
| - | |
| + | |
| switch ( *p++ ) { | |
| - | case 's': sct-> m_mode |= S_ISGID; // no break |
| + | case 's': sct-> m_mode |= S_ISGID; /* no break */ |
| case 'x': sct-> m_mode |= S_IXGRP; break; | |
| case 'S': break; | |
| case '-': break; | |
| default : parse_error ( "invalid group mode" ); | |
| } | |
| - | |
| + | |
| switch ( *p ) { | |
| case 't': | |
| case 'x': sct-> m_mode |= S_IXOTH; break; | |
| @@ -349,9 +349,9 @@ int parse_config_file ( void ) | |
| case '-': break; | |
| default : parse_error ( "invalid other mode" ); | |
| } | |
| - | |
| - | while ( isspace ( *++p )) { } // skip whitespace |
| - | |
| + | |
| + | while ( isspace ( *++p )) { } /* skip whitespace */ |
| + | |
| if ( isdigit ( *p )) { | |
| sct-> m_uid = strtol ( p, &p, 10 ); | |
| if ( *p++ != '.' ) | |
| @@ -363,13 +363,13 @@ int parse_config_file ( void ) | |
| if ( !p2 ) | |
| parse_error ( "parsing <uid>.<gid>" ); | |
| - | |
| + | |
| *p2 = 0; | |
| pwd = getpwnam ( p ); | |
| - | |
| + | |
| if ( !pwd ) | |
| parse_error ( "invalid user name" ); | |
| - | |
| + | |
| sct-> m_uid = pwd-> pw_uid; | |
| p = p2 + 1; | |
| } | |
| @@ -377,16 +377,16 @@ int parse_config_file ( void ) | |
| sct-> m_gid = strtol ( p, &p, 10 ); | |
| else { | |
| struct group *grp = getgrnam ( p ); | |
| - | |
| + | |
| if ( !grp ) | |
| parse_error ( "invalid group name" ); | |
| - | |
| + | |
| sct-> m_gid = grp-> gr_gid; | |
| } | |
| } | |
| break; | |
| } | |
| - | default: // unknown - skip |
| + | default: /* unknown - skip */ |
| break; | |
| } | |
| } | |
| @@ -398,8 +398,8 @@ int parse_config_file ( void ) | |
| } | |
| } | |
| } | |
| - | return 0; // no config file or not readable (not an error) |
| - | |
| + | return 0; /* no config file or not readable (not an error) */ |
| + | |
| pe_label: | |
| fprintf ( stderr, "Parse error in %s, line %d: %s\n", CONFIG_FILE, lc, err ); | |