X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=8f81e77a3f7f9ea1c00b379365909ea426c11156;hp=7558eca532c084661c837a8630371efc62e08947;hb=6630f05d0a6d631c9ed2edfef9951df892287794;hpb=d2f54bbc4ef071a92508fa26d5d4641a3f2215c1 diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 7558eca..8f81e77 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -442,14 +442,14 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat) break; case FT_LS_DECODECOMP: - if (decode_rfc2047(fmt->f_comp->c_text, buffer2)) + if (decode_rfc2047(fmt->f_comp->c_text, buffer2, sizeof(buffer2))) str = buffer2; else str = fmt->f_comp->c_text; break; case FT_LS_DECODE: - if (str && decode_rfc2047(str, buffer2)) + if (str && decode_rfc2047(str, buffer2, sizeof(buffer2))) str = buffer2; break; @@ -458,6 +458,7 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat) char *xp; strncpy(buffer, str, sizeof(buffer)); + buffer[sizeof(buffer)-1] = '\0'; str = buffer; while (isspace(*str)) str++; @@ -646,6 +647,7 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat) if ((str = mn->m_pers) == NULL) { if ((str = mn->m_note)) { strncpy (buffer, str, sizeof(buffer)); + buffer[sizeof(buffer)-1] = '\0'; str = buffer; if (*str == '(') str++; @@ -690,6 +692,8 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat) if (str) { int m; strncpy(buffer, str, sizeof(buffer)); + /* strncpy doesn't NUL-terminate if it fills the buffer */ + buffer[sizeof(buffer)-1] = '\0'; str = buffer; /* we will parse from buffer to buffer2 */