libbb: ensure mode_string is NUL terminated
If the mode_string array is no longer static we can't rely on it being NUL terminated. function old new delta bb_mode_string 115 118 +3 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
59ac467dc6
commit
3a65435eaa
@ -66,10 +66,7 @@ char* FAST_FUNC bb_mode_string(char buf[12], mode_t mode)
|
|||||||
i += 4;
|
i += 4;
|
||||||
} while (i < 12);
|
} while (i < 12);
|
||||||
|
|
||||||
/* Note: We don't bother with nul termination because bss initialization
|
buf[10] = '\0';
|
||||||
* should have taken care of that for us. If the user scribbled in buf
|
|
||||||
* memory, they deserve whatever happens. But we'll at least assert. */
|
|
||||||
assert(buf[10] == 0);
|
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@ -79,7 +76,7 @@ char* FAST_FUNC bb_mode_string(char buf[12], mode_t mode)
|
|||||||
/* The previous version used "0pcCd?bB-?l?s???". However, the '0', 'C',
|
/* The previous version used "0pcCd?bB-?l?s???". However, the '0', 'C',
|
||||||
* and 'B' types don't appear to be available on linux. So I removed them. */
|
* and 'B' types don't appear to be available on linux. So I removed them. */
|
||||||
static const char type_chars[16] ALIGN1 = "?pc?d?b?-?l?s???";
|
static const char type_chars[16] ALIGN1 = "?pc?d?b?-?l?s???";
|
||||||
/********************************** 0123456789abcdef */
|
/***************************************** 0123456789abcdef */
|
||||||
static const char mode_chars[7] ALIGN1 = "rwxSTst";
|
static const char mode_chars[7] ALIGN1 = "rwxSTst";
|
||||||
|
|
||||||
char* FAST_FUNC bb_mode_string(char buf[12], mode_t mode)
|
char* FAST_FUNC bb_mode_string(char buf[12], mode_t mode)
|
||||||
@ -107,10 +104,7 @@ char* FAST_FUNC bb_mode_string(char buf[12], mode_t mode)
|
|||||||
}
|
}
|
||||||
} while (i < 3);
|
} while (i < 3);
|
||||||
|
|
||||||
/* Note: We don't bother with nul termination because bss initialization
|
buf[10] = '\0';
|
||||||
* should have taken care of that for us. If the user scribbled in buf
|
|
||||||
* memory, they deserve whatever happens. But we'll at least assert. */
|
|
||||||
assert(buf[10] == 0);
|
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user