aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-10-06 02:36:47 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2020-10-06 02:36:47 +0200
commit2496616b0a8d1c80cd1416b73a4847b59b9f969a (patch)
treedc52a8f9bbbf33d507ecf0b808614b7923786567 /libbb
parent535a509846be5087ddd0d6e8fc6399f919942639 (diff)
downloadbusybox-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.c20
-rw-r--r--libbb/update_passwd.c15
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
19static void check_selinux_update_passwd(const char *username) 19static 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;