diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-10-06 02:36:47 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-10-06 02:36:47 +0200 |
commit | 2496616b0a8d1c80cd1416b73a4847b59b9f969a (patch) | |
tree | dc52a8f9bbbf33d507ecf0b808614b7923786567 /libbb | |
parent | 535a509846be5087ddd0d6e8fc6399f919942639 (diff) | |
download | busybox-w32-2496616b0a8d1c80cd1416b73a4847b59b9f969a.tar.gz busybox-w32-2496616b0a8d1c80cd1416b73a4847b59b9f969a.tar.bz2 busybox-w32-2496616b0a8d1c80cd1416b73a4847b59b9f969a.zip |
avoid using strok - eliminates use of hidden global variable
function old new delta
udhcp_str2optset 616 650 +34
setpriv_main 950 975 +25
switch_root_main 688 706 +18
parse 958 970 +12
getopt_main 622 628 +6
parse_resolvconf 302 306 +4
mpstat_main 1139 1142 +3
static.p 4 - -4
cdcmd 717 702 -15
strtok 148 - -148
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 7/1 up/down: 102/-167) Total: -65 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/kernel_version.c | 20 | ||||
-rw-r--r-- | libbb/update_passwd.c | 15 |
2 files changed, 20 insertions, 15 deletions
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c index 7769a091b..6bb32ce5f 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c | |||
@@ -19,15 +19,17 @@ int FAST_FUNC get_linux_version_code(void) | |||
19 | { | 19 | { |
20 | struct utsname name; | 20 | struct utsname name; |
21 | char *t; | 21 | char *t; |
22 | int i, r; | 22 | int r; |
23 | 23 | ||
24 | uname(&name); /* never fails */ | 24 | uname(&name); /* never fails */ |
25 | t = name.release; | 25 | t = name.release - 1; |
26 | r = 0; | 26 | r = 1; |
27 | for (i = 0; i < 3; i++) { | 27 | do { |
28 | t = strtok(t, "."); | 28 | r <<= 8; |
29 | r = r * 256 + (t ? atoi(t) : 0); | 29 | if (t) { |
30 | t = NULL; | 30 | r += atoi(++t); |
31 | } | 31 | t = strchr(t, '.'); |
32 | return r; | 32 | } |
33 | } while (r < 0x1000000); | ||
34 | return r - 0x1000000; | ||
33 | } | 35 | } |
diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c index c605c4c64..7b67f30cd 100644 --- a/libbb/update_passwd.c +++ b/libbb/update_passwd.c | |||
@@ -18,17 +18,20 @@ | |||
18 | #if ENABLE_SELINUX | 18 | #if ENABLE_SELINUX |
19 | static void check_selinux_update_passwd(const char *username) | 19 | static void check_selinux_update_passwd(const char *username) |
20 | { | 20 | { |
21 | security_context_t context; | 21 | security_context_t seuser; |
22 | char *seuser; | 22 | char *p; |
23 | 23 | ||
24 | if (getuid() != (uid_t)0 || is_selinux_enabled() == 0) | 24 | if (getuid() != (uid_t)0 || is_selinux_enabled() == 0) |
25 | return; /* No need to check */ | 25 | return; /* No need to check */ |
26 | 26 | ||
27 | if (getprevcon_raw(&context) < 0) | 27 | if (getprevcon_raw(&seuser) < 0) |
28 | bb_simple_perror_msg_and_die("getprevcon failed"); | 28 | bb_simple_perror_msg_and_die("getprevcon failed"); |
29 | seuser = strtok(context, ":"); | 29 | |
30 | if (!seuser) | 30 | p = strchr(seuser, ':'); |
31 | bb_error_msg_and_die("invalid context '%s'", context); | 31 | if (!p) |
32 | bb_error_msg_and_die("invalid context '%s'", seuser); | ||
33 | *p = '\0'; | ||
34 | |||
32 | if (strcmp(seuser, username) != 0) { | 35 | if (strcmp(seuser, username) != 0) { |
33 | security_class_t tclass; | 36 | security_class_t tclass; |
34 | access_vector_t av; | 37 | access_vector_t av; |