]> The Tcpdump Group git mirrors - tcpdump/blobdiff - smbutil.c
Fix small misspellings
[tcpdump] / smbutil.c
index 3493265fd2ff61f28b5008904c28adfec8b44b74..26a52340bb40874fc1d67a08431d87b35ff0a609 100644 (file)
--- a/smbutil.c
+++ b/smbutil.c
@@ -7,10 +7,10 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
 #endif
 
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -103,7 +103,7 @@ interpret_long_date(const u_char *p)
     time_t ret;
 
     /* this gives us seconds since jan 1st 1601 (approx) */
-    d = (EXTRACT_LE_U_4(p + 4) * 256.0 + p[3]) * (1.0e-7 * (1 << 24));
+    d = (EXTRACT_LE_U_4(p + 4) * 256.0 + EXTRACT_U_1(p + 3)) * (1.0e-7 * (1 << 24));
 
     /* now adjust by 369 years to make the secs since 1970 */
     d -= 369.0 * 365.25 * 24 * 60 * 60;
@@ -128,7 +128,7 @@ name_interpret(netdissect_options *ndo,
                const u_char *in, const u_char *maxbuf, char *out)
 {
     int ret;
-    int len;
+    u_int len;
 
     if (in >= maxbuf)
        return(-1);     /* name goes past the end of the buffer */
@@ -138,20 +138,22 @@ name_interpret(netdissect_options *ndo,
 
     *out=0;
 
-    if (len > 30 || len < 1)
+    if (len > 30 || len == 0)
        return(0);
 
-    while (len--) {
+    while (len) {
        ND_TCHECK_2(in);
        if (in + 1 >= maxbuf)
            return(-1); /* name goes past the end of the buffer */
-       if (in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P') {
+       if (EXTRACT_U_1(in) < 'A' || EXTRACT_U_1(in) > 'P' ||
+           EXTRACT_U_1(in + 1) < 'A' || EXTRACT_U_1(in + 1) > 'P') {
            *out = 0;
            return(0);
        }
-       *out = ((in[0] - 'A') << 4) + (in[1] - 'A');
+       *out = ((EXTRACT_U_1(in) - 'A') << 4) + (EXTRACT_U_1(in + 1) - 'A');
        in += 2;
        out++;
+       len--;
     }
     *out = 0;
     ret = out[-1];
@@ -167,7 +169,7 @@ trunc:
  */
 static const u_char *
 name_ptr(netdissect_options *ndo,
-         const u_char *buf, int ofs, const u_char *maxbuf)
+         const u_char *buf, u_int ofs, const u_char *maxbuf)
 {
     const u_char *p;
     u_char c;
@@ -177,7 +179,7 @@ name_ptr(netdissect_options *ndo,
        return(NULL);   /* name goes past the end of the buffer */
     ND_TCHECK_1(p);
 
-    c = *p;
+    c = EXTRACT_U_1(p);
 
     /* XXX - this should use the same code that the DNS dissector does */
     if ((c & 0xC0) == 0xC0) {
@@ -207,7 +209,7 @@ trunc:
  */
 static int
 name_extract(netdissect_options *ndo,
-             const u_char *buf, int ofs, const u_char *maxbuf, char *name)
+             const u_char *buf, u_int ofs, const u_char *maxbuf, char *name)
 {
     const u_char *p = name_ptr(ndo, buf, ofs, maxbuf);
     if (p == NULL)
@@ -222,22 +224,22 @@ name_extract(netdissect_options *ndo,
  */
 static int
 name_len(netdissect_options *ndo,
-         const unsigned char *s, const unsigned char *maxbuf)
+         const u_char *s, const u_char *maxbuf)
 {
-    const unsigned char *s0 = s;
+    const u_char *s0 = s;
     unsigned char c;
 
     if (s >= maxbuf)
        return(-1);     /* name goes past the end of the buffer */
     ND_TCHECK_1(s);
-    c = *s;
+    c = EXTRACT_U_1(s);
     if ((c & 0xC0) == 0xC0)
        return(2);
-    while (*s) {
+    while (EXTRACT_U_1(s)) {
        if (s >= maxbuf)
            return(-1); /* name goes past the end of the buffer */
        ND_TCHECK_1(s);
-       s += (*s) + 1;
+       s += EXTRACT_U_1(s) + 1;
        ND_TCHECK_1(s);
     }
     return(PTR_DIFF(s, s0) + 1);
@@ -248,11 +250,11 @@ trunc:
 
 static void
 print_asc(netdissect_options *ndo,
-          const unsigned char *buf, int len)
+          const u_char *buf, u_int len)
 {
-    int i;
+    u_int i;
     for (i = 0; i < len; i++)
-        safeputchar(ndo, EXTRACT_U_1(buf + i));
+        fn_print_char(ndo, EXTRACT_U_1(buf + i));
 }
 
 static const char *
@@ -273,51 +275,50 @@ name_type_str(int name_type)
 }
 
 void
-smb_print_data(netdissect_options *ndo, const unsigned char *buf, int len)
+smb_data_print(netdissect_options *ndo, const u_char *buf, u_int len)
 {
-    int i = 0;
+    u_int i = 0;
 
-    if (len <= 0)
+    if (len == 0)
        return;
-    ND_PRINT((ndo, "[%03X] ", i));
+    ND_PRINT("[%03X] ", i);
     for (i = 0; i < len; /*nothing*/) {
-        ND_TCHECK(buf[i]);
-       ND_PRINT((ndo, "%02X ", EXTRACT_U_1(buf + i) & 0xff));
+        ND_TCHECK_1(buf + i);
+       ND_PRINT("%02X ", EXTRACT_U_1(buf + i) & 0xff);
        i++;
        if (i%8 == 0)
-           ND_PRINT((ndo, " "));
+           ND_PRINT(" ");
        if (i % 16 == 0) {
-           print_asc(ndo, &buf[i - 16], 8);
-           ND_PRINT((ndo, " "));
-           print_asc(ndo, &buf[i - 8], 8);
-           ND_PRINT((ndo, "\n"));
+           print_asc(ndo, buf + i - 16, 8);
+           ND_PRINT(" ");
+           print_asc(ndo, buf + i - 8, 8);
+           ND_PRINT("\n");
            if (i < len)
-               ND_PRINT((ndo, "[%03X] ", i));
+               ND_PRINT("[%03X] ", i);
        }
     }
     if (i % 16) {
        int n;
 
        n = 16 - (i % 16);
-       ND_PRINT((ndo, " "));
+       ND_PRINT(" ");
        if (n>8)
-           ND_PRINT((ndo, " "));
+           ND_PRINT(" ");
        while (n--)
-           ND_PRINT((ndo, "   "));
+           ND_PRINT("   ");
 
        n = min(8, i % 16);
-       print_asc(ndo, &buf[i - (i % 16)], n);
-       ND_PRINT((ndo, " "));
+       print_asc(ndo, buf + i - (i % 16), n);
+       ND_PRINT(" ");
        n = (i % 16) - n;
        if (n > 0)
-           print_asc(ndo, &buf[i - n], n);
-       ND_PRINT((ndo, "\n"));
+           print_asc(ndo, buf + i - n, n);
+       ND_PRINT("\n");
     }
     return;
 
 trunc:
-    ND_PRINT((ndo, "\n"));
-    ND_PRINT((ndo, "WARNING: Short packet. Try increasing the snap length\n"));
+    nd_print_trunc(ndo);
 }
 
 
@@ -326,12 +327,12 @@ write_bits(netdissect_options *ndo,
            unsigned int val, const char *fmt)
 {
     const char *p = fmt;
-    int i = 0;
+    u_int i = 0;
 
     while ((p = strchr(fmt, '|'))) {
        size_t l = PTR_DIFF(p, fmt);
        if (l && (val & (1 << i)))
-           ND_PRINT((ndo, "%.*s ", (int)l, fmt));
+           ND_PRINT("%.*s ", (int)l, fmt);
        fmt = p + 1;
        i++;
     }
@@ -353,7 +354,7 @@ unistr(netdissect_options *ndo,
         * Skip padding that puts the string on an even boundary.
         */
        if (((s - startbuf) % 2) != 0) {
-           ND_TCHECK(s[0]);
+           ND_TCHECK_1(s);
            s++;
        }
     }
@@ -365,9 +366,9 @@ unistr(netdissect_options *ndo,
        sp = s;
        if (!use_unicode) {
            for (;;) {
-               ND_TCHECK(sp[0]);
+               ND_TCHECK_1(sp);
                *len += 1;
-               if (sp[0] == 0)
+               if (EXTRACT_U_1(sp) == 0)
                    break;
                sp++;
            }
@@ -376,7 +377,7 @@ unistr(netdissect_options *ndo,
            for (;;) {
                ND_TCHECK_2(sp);
                *len += 2;
-               if (sp[0] == 0 && sp[1] == 0)
+               if (EXTRACT_U_1(sp) == 0 && EXTRACT_U_1(sp + 1) == 0)
                    break;
                sp += 2;
            }
@@ -390,13 +391,13 @@ unistr(netdissect_options *ndo,
     }
     if (!use_unicode) {
        while (strsize != 0) {
-          ND_TCHECK(s[0]);
+          ND_TCHECK_1(s);
            if (l >= MAX_UNISTR_SIZE)
                break;
            if (ND_ISPRINT(EXTRACT_U_1(s)))
-               buf[l] = s[0];
+               buf[l] = EXTRACT_U_1(s);
            else {
-               if (s[0] == 0)
+               if (EXTRACT_U_1(s) == 0)
                    break;
                buf[l] = '.';
            }
@@ -409,12 +410,12 @@ unistr(netdissect_options *ndo,
            ND_TCHECK_2(s);
            if (l >= MAX_UNISTR_SIZE)
                break;
-           if (s[1] == 0 && ND_ISPRINT(EXTRACT_U_1(s))) {
+           if (EXTRACT_U_1(s + 1) == 0 && ND_ISPRINT(EXTRACT_U_1(s))) {
                /* It's a printable ASCII character */
-               buf[l] = s[0];
+               buf[l] = EXTRACT_U_1(s);
            } else {
                /* It's a non-ASCII character or a non-printable ASCII character */
-               if (s[0] == 0 && s[1] == 0)
+               if (EXTRACT_U_1(s) == 0 && EXTRACT_U_1(s + 1) == 0)
                    break;
                buf[l] = '.';
            }
@@ -443,7 +444,7 @@ smb_fdata1(netdissect_options *ndo,
     while (*fmt && buf<maxbuf) {
        switch (*fmt) {
        case 'a':
-           ND_TCHECK(buf[0]);
+           ND_TCHECK_1(buf);
            write_bits(ndo, EXTRACT_U_1(buf), attrib_fmt);
            buf++;
            fmt++;
@@ -460,18 +461,18 @@ smb_fdata1(netdissect_options *ndo,
          {
            char bitfmt[128];
            char *p;
-           int l;
+           u_int l;
 
            p = strchr(++fmt, '}');
            l = PTR_DIFF(p, fmt);
 
-           if ((unsigned int)l > sizeof(bitfmt) - 1)
-                   l = sizeof(bitfmt)-1;
+           if (l > sizeof(bitfmt) - 1)
+               l = sizeof(bitfmt)-1;
 
            strncpy(bitfmt, fmt, l);
            bitfmt[l] = '\0';
            fmt = p + 1;
-           ND_TCHECK(buf[0]);
+           ND_TCHECK_1(buf);
            write_bits(ndo, EXTRACT_U_1(buf), bitfmt);
            buf++;
            break;
@@ -480,7 +481,7 @@ smb_fdata1(netdissect_options *ndo,
        case 'P':
          {
            int l = atoi(fmt + 1);
-           ND_TCHECK2(buf[0], l);
+           ND_TCHECK_LEN(buf, l);
            buf += l;
            fmt++;
            while (isdigit((unsigned char)*fmt))
@@ -494,31 +495,31 @@ smb_fdata1(netdissect_options *ndo,
        case 'b':
          {
            unsigned int x;
-           ND_TCHECK(buf[0]);
-           x = buf[0];
-           ND_PRINT((ndo, "%u (0x%x)", x, x));
+           ND_TCHECK_1(buf);
+           x = EXTRACT_U_1(buf);
+           ND_PRINT("%u (0x%x)", x, x);
            buf += 1;
            fmt++;
            break;
          }
        case 'd':
          {
-           unsigned int x;
+           int x;
            ND_TCHECK_2(buf);
-           x = reverse ? EXTRACT_BE_U_2(buf) :
-                         EXTRACT_LE_U_2(buf);
-           ND_PRINT((ndo, "%d (0x%x)", x, x));
+           x = reverse ? EXTRACT_BE_S_2(buf) :
+                         EXTRACT_LE_S_2(buf);
+           ND_PRINT("%d (0x%x)", x, x);
            buf += 2;
            fmt++;
            break;
          }
        case 'D':
          {
-           unsigned int x;
+           int x;
            ND_TCHECK_4(buf);
-           x = reverse ? EXTRACT_BE_U_4(buf) :
-                         EXTRACT_LE_U_4(buf);
-           ND_PRINT((ndo, "%d (0x%x)", x, x));
+           x = reverse ? EXTRACT_BE_S_4(buf) :
+                         EXTRACT_LE_S_4(buf);
+           ND_PRINT("%d (0x%x)", x, x);
            buf += 4;
            fmt++;
            break;
@@ -529,11 +530,33 @@ smb_fdata1(netdissect_options *ndo,
            ND_TCHECK_8(buf);
            x = reverse ? EXTRACT_BE_U_8(buf) :
                          EXTRACT_LE_U_8(buf);
-           ND_PRINT((ndo, "%" PRIu64 " (0x%" PRIx64 ")", x, x));
+           ND_PRINT("%" PRIu64 " (0x%" PRIx64 ")", x, x);
            buf += 8;
            fmt++;
            break;
          }
+       case 'u':
+         {
+           unsigned int x;
+           ND_TCHECK_2(buf);
+           x = reverse ? EXTRACT_BE_U_2(buf) :
+                         EXTRACT_LE_U_2(buf);
+           ND_PRINT("%u (0x%x)", x, x);
+           buf += 2;
+           fmt++;
+           break;
+         }
+       case 'U':
+         {
+           unsigned int x;
+           ND_TCHECK_4(buf);
+           x = reverse ? EXTRACT_BE_U_4(buf) :
+                         EXTRACT_LE_U_4(buf);
+           ND_PRINT("%u (0x%x)", x, x);
+           buf += 4;
+           fmt++;
+           break;
+         }
        case 'M':
          {
            /* Weird mixed-endian length values in 64-bit locks */
@@ -545,7 +568,7 @@ smb_fdata1(netdissect_options *ndo,
            x2 = reverse ? EXTRACT_BE_U_4(buf + 4) :
                           EXTRACT_LE_U_4(buf + 4);
            x = (((uint64_t)x1) << 32) | x2;
-           ND_PRINT((ndo, "%" PRIu64 " (0x%" PRIx64 ")", x, x));
+           ND_PRINT("%" PRIu64 " (0x%" PRIx64 ")", x, x);
            buf += 8;
            fmt++;
            break;
@@ -553,9 +576,9 @@ smb_fdata1(netdissect_options *ndo,
        case 'B':
          {
            unsigned int x;
-           ND_TCHECK(buf[0]);
-           x = buf[0];
-           ND_PRINT((ndo, "0x%X", x));
+           ND_TCHECK_1(buf);
+           x = EXTRACT_U_1(buf);
+           ND_PRINT("0x%X", x);
            buf += 1;
            fmt++;
            break;
@@ -566,7 +589,7 @@ smb_fdata1(netdissect_options *ndo,
            ND_TCHECK_2(buf);
            x = reverse ? EXTRACT_BE_U_2(buf) :
                          EXTRACT_LE_U_2(buf);
-           ND_PRINT((ndo, "0x%X", x));
+           ND_PRINT("0x%X", x);
            buf += 2;
            fmt++;
            break;
@@ -577,7 +600,7 @@ smb_fdata1(netdissect_options *ndo,
            ND_TCHECK_4(buf);
            x = reverse ? EXTRACT_BE_U_4(buf) :
                          EXTRACT_LE_U_4(buf);
-           ND_PRINT((ndo, "0x%X", x));
+           ND_PRINT("0x%X", x);
            buf += 4;
            fmt++;
            break;
@@ -588,25 +611,27 @@ smb_fdata1(netdissect_options *ndo,
            switch (*fmt) {
 
            case 'b':
-               ND_TCHECK(buf[0]);
-               stringlen = buf[0];
-               ND_PRINT((ndo, "%u", stringlen));
+               ND_TCHECK_1(buf);
+               stringlen = EXTRACT_U_1(buf);
+               ND_PRINT("%u", stringlen);
                buf += 1;
                break;
 
            case 'd':
+           case 'u':
                ND_TCHECK_2(buf);
                stringlen = reverse ? EXTRACT_BE_U_2(buf) :
                                      EXTRACT_LE_U_2(buf);
-               ND_PRINT((ndo, "%u", stringlen));
+               ND_PRINT("%u", stringlen);
                buf += 2;
                break;
 
            case 'D':
+           case 'U':
                ND_TCHECK_4(buf);
                stringlen = reverse ? EXTRACT_BE_U_4(buf) :
                                      EXTRACT_LE_U_4(buf);
-               ND_PRINT((ndo, "%u", stringlen));
+               ND_PRINT("%u", stringlen);
                buf += 4;
                break;
            }
@@ -624,7 +649,7 @@ smb_fdata1(netdissect_options *ndo,
            s = unistr(ndo, buf, &len, (*fmt == 'R') ? 0 : unicodestr);
            if (s == NULL)
                goto trunc;
-           ND_PRINT((ndo, "%s", s));
+           ND_PRINT("%s", s);
            buf += len;
            fmt++;
            break;
@@ -635,16 +660,16 @@ smb_fdata1(netdissect_options *ndo,
            const char *s;
            uint32_t len;
 
-           ND_TCHECK(*buf);
-           if (*buf != 4 && *buf != 2) {
-               ND_PRINT((ndo, "Error! ASCIIZ buffer of type %u", EXTRACT_U_1(buf)));
+           ND_TCHECK_1(buf);
+           if (EXTRACT_U_1(buf) != 4 && EXTRACT_U_1(buf) != 2) {
+               ND_PRINT("Error! ASCIIZ buffer of type %u", EXTRACT_U_1(buf));
                return maxbuf;  /* give up */
            }
            len = 0;
            s = unistr(ndo, buf + 1, &len, (*fmt == 'Y') ? 0 : unicodestr);
            if (s == NULL)
                goto trunc;
-           ND_PRINT((ndo, "%s", s));
+           ND_PRINT("%s", s);
            buf += len + 1;
            fmt++;
            break;
@@ -652,8 +677,8 @@ smb_fdata1(netdissect_options *ndo,
        case 's':
          {
            int l = atoi(fmt + 1);
-           ND_TCHECK2(*buf, l);
-           ND_PRINT((ndo, "%-*.*s", l, l, buf));
+           ND_TCHECK_LEN(buf, l);
+           ND_PRINT("%-*.*s", l, l, buf);
            buf += l;
            fmt++;
            while (isdigit((unsigned char)*fmt))
@@ -662,8 +687,8 @@ smb_fdata1(netdissect_options *ndo,
          }
        case 'c':
          {
-           ND_TCHECK2(*buf, stringlen);
-           ND_PRINT((ndo, "%-*.*s", (int)stringlen, (int)stringlen, buf));
+           ND_TCHECK_LEN(buf, stringlen);
+           ND_PRINT("%-*.*s", (int)stringlen, (int)stringlen, buf);
            buf += stringlen;
            fmt++;
            while (isdigit((unsigned char)*fmt))
@@ -676,7 +701,7 @@ smb_fdata1(netdissect_options *ndo,
            s = unistr(ndo, buf, &stringlen, unicodestr);
            if (s == NULL)
                goto trunc;
-           ND_PRINT((ndo, "%s", s));
+           ND_PRINT("%s", s);
            buf += stringlen;
            fmt++;
            break;
@@ -684,9 +709,9 @@ smb_fdata1(netdissect_options *ndo,
        case 'h':
          {
            int l = atoi(fmt + 1);
-           ND_TCHECK2(*buf, l);
+           ND_TCHECK_LEN(buf, l);
            while (l--) {
-               ND_PRINT((ndo, "%02x", EXTRACT_U_1(buf)));
+               ND_PRINT("%02x", EXTRACT_U_1(buf));
                buf++;
            }
            fmt++;
@@ -711,14 +736,14 @@ smb_fdata1(netdissect_options *ndo,
                if (len < 0)
                    goto trunc;
                buf += len;
-               ND_PRINT((ndo, "%-15.15s NameType=0x%02X (%s)", nbuf, name_type,
-                   name_type_str(name_type)));
+               ND_PRINT("%-15.15s NameType=0x%02X (%s)", nbuf, name_type,
+                   name_type_str(name_type));
                break;
            case 2:
-               ND_TCHECK(buf[15]);
-               name_type = buf[15];
-               ND_PRINT((ndo, "%-15.15s NameType=0x%02X (%s)", buf, name_type,
-                   name_type_str(name_type)));
+               ND_TCHECK_1(buf + 15);
+               name_type = EXTRACT_U_1(buf + 15);
+               ND_PRINT("%-15.15s NameType=0x%02X (%s)", buf, name_type,
+                   name_type_str(name_type));
                buf += 16;
                break;
            }
@@ -770,27 +795,26 @@ smb_fdata1(netdissect_options *ndo,
                    tstring = "(Can't convert time)\n";
            } else
                tstring = "NULL\n";
-           ND_PRINT((ndo, "%s", tstring));
+           ND_PRINT("%s", tstring);
            fmt++;
            while (isdigit((unsigned char)*fmt))
                fmt++;
            break;
          }
        default:
-           ND_PRINT((ndo, "%c", *fmt));
+           ND_PRINT("%c", *fmt);
            fmt++;
            break;
        }
     }
 
     if (buf >= maxbuf && *fmt)
-       ND_PRINT((ndo, "END OF BUFFER\n"));
+       ND_PRINT("END OF BUFFER\n");
 
     return(buf);
 
 trunc:
-    ND_PRINT((ndo, "\n"));
-    ND_PRINT((ndo, "WARNING: Short packet. Try increasing the snap length\n"));
+    nd_print_trunc(ndo);
     return(NULL);
 }
 
@@ -855,15 +879,15 @@ smb_fdata(netdissect_options *ndo,
            break;
 
        default:
-           ND_PRINT((ndo, "%c", *fmt));
+           ND_PRINT("%c", *fmt);
            fmt++;
            break;
        }
     }
     if (!depth && buf < maxbuf) {
        size_t len = PTR_DIFF(maxbuf, buf);
-       ND_PRINT((ndo, "Data: (%lu bytes)\n", (unsigned long)len));
-       smb_print_data(ndo, buf, len);
+       ND_PRINT("Data: (%lu bytes)\n", (unsigned long)len);
+       smb_data_print(ndo, buf, len);
        return(buf + len);
     }
     return(buf);
@@ -986,7 +1010,7 @@ static const struct {
 /*
  * return a SMB error string from a SMB buffer
  */
-char *
+const char *
 smb_errstr(int class, int num)
 {
     static char ret[128];
@@ -1000,17 +1024,17 @@ smb_errstr(int class, int num)
                const err_code_struct *err = err_classes[i].err_msgs;
                for (j = 0; err[j].name; j++)
                    if (num == err[j].code) {
-                       snprintf(ret, sizeof(ret), "%s - %s (%s)",
+                       nd_snprintf(ret, sizeof(ret), "%s - %s (%s)",
                            err_classes[i].class, err[j].name, err[j].message);
                        return ret;
                    }
            }
 
-           snprintf(ret, sizeof(ret), "%s - %d", err_classes[i].class, num);
+           nd_snprintf(ret, sizeof(ret), "%s - %d", err_classes[i].class, num);
            return ret;
        }
 
-    snprintf(ret, sizeof(ret), "ERROR: Unknown error (%d,%d)", class, num);
+    nd_snprintf(ret, sizeof(ret), "ERROR: Unknown error (%d,%d)", class, num);
     return(ret);
 }
 
@@ -1835,7 +1859,7 @@ static const nt_err_code_struct nt_errors[] = {
   { 0xC002100A, "RPC_P_SEND_FAILED" },
   { 0xC002100B, "RPC_P_TIMEOUT" },
   { 0xC002100C, "RPC_P_SERVER_TRANSPORT_ERROR" },
-  { 0xC002100E, "RPC_P_EXCEPTION_OCCURED" },
+  { 0xC002100E, "RPC_P_EXCEPTION_OCCURRED" },
   { 0xC0021012, "RPC_P_CONNECTION_SHUTDOWN" },
   { 0xC0021015, "RPC_P_THREAD_LISTENING" },
   { 0xC0030001, "RPC_NT_NO_MORE_ENTRIES" },
@@ -1891,6 +1915,6 @@ nt_errstr(uint32_t err)
            return nt_errors[i].name;
     }
 
-    snprintf(ret, sizeof(ret), "0x%08x", err);
+    nd_snprintf(ret, sizeof(ret), "0x%08x", err);
     return ret;
 }