uudecode: tolerate text input with CR+LF line ends

function                                             old     new   delta
read_stduu                                           265     308     +43
uudecode_main                                        313     317      +4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2015-10-05 15:10:44 +02:00
parent e6b578761a
commit 2b48c38be6
2 changed files with 19 additions and 13 deletions

View File

@ -29,9 +29,19 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U
{
char *line;
while ((line = xmalloc_fgetline(src_stream)) != NULL) {
for (;;) {
int encoded_len, str_len;
char *line_ptr, *dst;
size_t line_len;
line_len = 64 * 1024;
line = xmalloc_fgets_str_len(src_stream, "\n", &line_len);
if (!line)
break;
/* Handle both Unix and MSDOS text, and stray trailing spaces */
str_len = line_len;
while (--str_len >= 0 && isspace(line[str_len]))
line[str_len] = '\0';
if (strcmp(line, "end") == 0) {
return; /* the only non-error exit */
@ -128,6 +138,7 @@ int uudecode_main(int argc UNUSED_PARAM, char **argv)
if (!outname)
break;
outname++;
trim(outname); /* remove trailing space (and '\r' for DOS text) */
if (!outname[0])
break;
}

View File

@ -33,7 +33,7 @@ You can also run "./parallel-build-hdc-img.sh -s system-image-ARCH"
- single mode, output is to screen and serial input is from keyboard.
If hdc.dir/bin/busybox-$ARCH exists, it will be used during build
to supply additional tools.
to supply additional tools (dir with all applets appended to $PATH).
For me, the following system images worked:
system-image-armv4l
@ -42,22 +42,17 @@ system-image-armv5l
od is buggy on arm*:
# echo Hello-hello-hello-hello | od -b
0000000 110 145 154 154 157 055 150 145 154 154 157 055 150 145 154 154
0000000 157 055 150 145 154 154 157 012
0000000
0000000 157 055 150 145 154 154 157 012 <= WRONG OFFSET
0000000 (can also be even more bogus like 17767153361)
system-image-i686
system-image-mips
system-image-mipsel
od is buggy on mips[el]:
# echo Hello-hello-hello-hello | od -b
0000000 110 145 154 154 157 055 150 145 154 154 157 055 150 145 154 154
17767153361 157 055 150 145 154 154 157 012
0000000
system-image-mips - od is buggy
system-image-mipsel - od is buggy
system-image-x86_64
system-image-powerpc - qemu 1.2.2 didn't work, 2.4.0 worked; od is buggy
system-image-sparc - qemu 1.2.2 didn't work, 2.4.0 worked; od is buggy
And these did not:
system-image-armv6l - hang on "Uncompressing Linux... done, booting the kernel"
system-image-powerpc - hang early in kernel boot
system-image-sparc - hang early in userspace
system-image-m68k - my qemu doesn't like "-M q800"
system-image-mips64 - init dies "Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000a"
system-image-sh4 - qemu segfaults early in kernel boot