From 0baa42bdd751b81ca6d17d1b5377a4e345936cad Mon Sep 17 00:00:00 2001 From: Matthew Chapman Date: Mon, 15 Feb 1999 05:31:52 +0000 Subject: Always null-terminate strings. (This used to be commit b314430b2102e47529b093b1b98b5b6f3b6ea74f) --- source3/lib/util_unistr.c | 49 +++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'source3/lib') diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c index b126feb7ff..01ec262f60 100644 --- a/source3/lib/util_unistr.c +++ b/source3/lib/util_unistr.c @@ -27,19 +27,23 @@ char *ascii_to_unibuf(char *dest, const char *src, int maxlen) { - char *destend = dest + maxlen - 1; + char *destend = dest + maxlen; register char c; while (dest < destend) { - *(dest++) = c = *(src++); - *(dest++) = 0; + c = *(src++); if (c == 0) { break; } + + *(dest++) = c; + *(dest++) = 0; } + *dest++ = 0; + *dest++ = 0; return dest; } @@ -55,13 +59,17 @@ void unibuf_to_ascii(char *dest, const char *src, int maxlen) while (dest < destend) { - *(dest++) = c = *(src++); + c = *(src++); if ((c == 0) && (*src == 0)) { break; } + + *dest++ = c; src++; } + + *dest = 0; } @@ -77,13 +85,15 @@ void ascii_to_unistr(uint16 *dest, const char *src, int maxlen) while (dest < destend) { c = *(src++); - *(dest++) = (uint16)c; - if (c == 0) { break; } + + *(dest++) = (uint16)c; } + + *dest = 0; } @@ -99,13 +109,15 @@ void unistr_to_ascii(char *dest, const uint16 *src, int len) while (dest < destend) { c = *(src++); - *(dest++) = (char)c; - if (c == 0) { break; } + + *(dest++) = (char)c; } + + *dest = 0; } @@ -113,7 +125,7 @@ void unistr_to_ascii(char *dest, const uint16 *src, int len) Convert a UNISTR2 structure to an ASCII string ********************************************************************/ -void unistr2_to_ascii(char *dest, const UNISTR2 *str, int destlen) +void unistr2_to_ascii(char *dest, const UNISTR2 *str, int maxlen) { char *destend; const uint16 *src; @@ -121,19 +133,21 @@ void unistr2_to_ascii(char *dest, const UNISTR2 *str, int destlen) register uint16 c; src = str->buffer; - len = MIN(str->uni_str_len, destlen); + len = MIN(str->uni_str_len, maxlen); destend = dest + len; while (dest < destend) { c = *(src++); - *(dest++) = (char)c; - if (c == 0) { break; } + + *(dest++) = (char)c; } + + *dest = 0; } @@ -167,13 +181,16 @@ char *uni_strncpy(char *destbuf, const char *srcbuf, int len) while (dest < destend) { - *(dest++) = c = *(src++); + c = *(src++); if (c == 0) { break; } + + *(dest++) = c; } + *dest++ = 0; return (char *)dest; } @@ -200,7 +217,7 @@ uint32 buffer2_to_uint32(const BUFFER2 *str) Convert a 'multi-string' buffer to space-separated ASCII. ********************************************************************/ -void buffer2_to_multistr(char *dest, const BUFFER2 *str, int destlen) +void buffer2_to_multistr(char *dest, const BUFFER2 *str, int maxlen) { char *destend; const uint16 *src; @@ -208,8 +225,8 @@ void buffer2_to_multistr(char *dest, const BUFFER2 *str, int destlen) register uint16 c; src = str->buffer; - len = MIN(str->buf_len/2, destlen); - destend = dest + len - 1; + len = MIN(str->buf_len/2, maxlen); + destend = dest + len; while (dest < destend) { -- cgit