uuencode: allow space instead of "`" as padding char. Closes 10046
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
90678f0cd7
commit
7b6e8f3f1a
@ -47,10 +47,16 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U
|
|||||||
line = xmalloc_fgets_str_len(src_stream, "\n", &line_len);
|
line = xmalloc_fgets_str_len(src_stream, "\n", &line_len);
|
||||||
if (!line)
|
if (!line)
|
||||||
break;
|
break;
|
||||||
/* Handle both Unix and MSDOS text, and stray trailing spaces */
|
/* Handle both Unix and MSDOS text.
|
||||||
|
* Note: space should not be trimmed, some encoders use it instead of "`"
|
||||||
|
* for padding of last incomplete 4-char block.
|
||||||
|
*/
|
||||||
str_len = line_len;
|
str_len = line_len;
|
||||||
while (--str_len >= 0 && isspace(line[str_len]))
|
while (--str_len >= 0
|
||||||
|
&& (line[str_len] == '\n' || line[str_len] == '\r')
|
||||||
|
) {
|
||||||
line[str_len] = '\0';
|
line[str_len] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(line, "end") == 0) {
|
if (strcmp(line, "end") == 0) {
|
||||||
return; /* the only non-error exit */
|
return; /* the only non-error exit */
|
||||||
@ -65,7 +71,7 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U
|
|||||||
|
|
||||||
encoded_len = line[0] * 4 / 3;
|
encoded_len = line[0] * 4 / 3;
|
||||||
/* Check that line is not too short. (we tolerate
|
/* Check that line is not too short. (we tolerate
|
||||||
* overly _long_ line to accommodate possible extra '`').
|
* overly _long_ line to accommodate possible extra "`").
|
||||||
* Empty line case is also caught here. */
|
* Empty line case is also caught here. */
|
||||||
if (str_len <= encoded_len) {
|
if (str_len <= encoded_len) {
|
||||||
break; /* go to bb_error_msg_and_die("short file"); */
|
break; /* go to bb_error_msg_and_die("short file"); */
|
||||||
|
Loading…
Reference in New Issue
Block a user