diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c index 287386d9d..2dd8f9457 100644 --- a/coreutils/uudecode.c +++ b/coreutils/uudecode.c @@ -68,8 +68,6 @@ static void read_stduu(FILE *src_stream, FILE *dst_stream) static void read_base64(FILE *src_stream, FILE *dst_stream) { - static const char base64_table[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n"; int term_count = 1; while (1) { @@ -80,17 +78,20 @@ static void read_base64(FILE *src_stream, FILE *dst_stream) char *table_ptr; int ch; - /* Get next _valid_ character */ + /* Get next _valid_ character. + * global vector bb_uuenc_tbl_base64[] contains this string: + * "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n" + */ do { ch = fgetc(src_stream); if (ch == EOF) { bb_error_msg_and_die("short file"); } - table_ptr = strchr(base64_table, ch); + table_ptr = strchr(bb_uuenc_tbl_base64, ch); } while (table_ptr == NULL); - /* Convert encoded charcter to decimal */ - ch = table_ptr - base64_table; + /* Convert encoded character to decimal */ + ch = table_ptr - bb_uuenc_tbl_base64; if (*table_ptr == '=') { if (term_count == 0) { diff --git a/libbb/uuencode.c b/libbb/uuencode.c index 38401205b..bbb92d600 100644 --- a/libbb/uuencode.c +++ b/libbb/uuencode.c @@ -8,7 +8,7 @@ #include "libbb.h" /* Conversion table. for base 64 */ -const char bb_uuenc_tbl_base64[65] = { +const char bb_uuenc_tbl_base64[65 + 2] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', @@ -17,7 +17,8 @@ const char bb_uuenc_tbl_base64[65] = { 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', - '=' /* termination character */ + '=' /* termination character */, + '\n', '\0' /* needed for uudecode.c */ }; const char bb_uuenc_tbl_std[65] = {