]> The Tcpdump Group git mirrors - tcpdump/commitdiff
NDOize safeputs() and safeputchar()
authorDenis Ovsienko <[email protected]>
Tue, 1 Apr 2014 13:29:55 +0000 (17:29 +0400)
committerDenis Ovsienko <[email protected]>
Tue, 1 Apr 2014 15:46:05 +0000 (19:46 +0400)
20 files changed:
interface.h
netdissect.h
print-cfm.c
print-decnet.c
print-eap.c
print-fr.c
print-icmp6.c
print-isakmp.c
print-ldp.c
print-lldp.c
print-lwres.c
print-ospf.c
print-ppp.c
print-rsvp.c
print-sip.c
print-syslog.c
print-tcp.c
print-vqp.c
smbutil.c
util.c

index 6a0978e1421e5c2e1c15af8e29ee382efccf3291..47f035004dd4a74e0cacc4446c196b61ccaa4cc7 100644 (file)
@@ -144,9 +144,6 @@ extern void warning(const char *, ...)
 extern char *read_infile(char *);
 extern char *copy_argv(char **);
 
-extern void safeputchar(int);
-extern void safeputs(const char *, int);
-
 extern const char *isonsap_string(const u_char *, register u_int);
 extern const char *protoid_string(const u_char *);
 extern const char *ipxsap_string(u_short);
index 9a34e62283c96bb561e59b77b4531b8c691933ef..1cfc6fd95d3503802e2fa779a7c5cc70eea285e0 100644 (file)
@@ -278,8 +278,8 @@ extern char *copy_argv(netdissect_options *, char **);
 #define ND_ISGRAPH(c)  ((c) > 0x20 && (c) <= 0x7E)
 #define ND_TOASCII(c)  ((c) & 0x7F)
 
-extern void safeputchar(int);
-extern void safeputs(const char *, int);
+extern void safeputchar(netdissect_options *, const u_char);
+extern void safeputs(netdissect_options *, const u_char *, const u_int);
 
 #ifdef LBL_ALIGN
 /*
index 2dba46a7f188ee6907b21f3d1ad957f19e0fb377..2f43d6134b7999feaffc95e55e565d5322876e7f 100644 (file)
@@ -372,7 +372,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
             switch (msg_ptr.cfm_ccm->md_nameformat) {
             case CFM_CCM_MD_FORMAT_DNS:
             case CFM_CCM_MD_FORMAT_CHAR:
-                safeputs((const char *)msg_ptr.cfm_ccm->md_name, msg_ptr.cfm_ccm->md_namelength);
+                safeputs(gndo, msg_ptr.cfm_ccm->md_name, msg_ptr.cfm_ccm->md_namelength);
                 break;
 
             case CFM_CCM_MD_FORMAT_MAC:
@@ -405,7 +405,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
         printf("\n\t  MA Name: ");
         switch (*ma_nameformat) {
         case CFM_CCM_MA_FORMAT_CHAR:
-            safeputs((const char *)ma_name, *ma_namelength);
+            safeputs(gndo, ma_name, *ma_namelength);
             break;
 
             /* FIXME add printers for those MA formats - hexdump for now */
@@ -582,7 +582,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
                 case CFM_CHASSIS_ID_LOCAL:
                 case CFM_CHASSIS_ID_CHASSIS_COMPONENT:
                 case CFM_CHASSIS_ID_PORT_COMPONENT:
-                    safeputs((const char *)tptr+1, chassis_id_length);
+                    safeputs(gndo, tptr + 1, chassis_id_length);
                     break;
 
                 default:
index 83c1518c2871606333ee0226b8be1ffbab37cda4..6a21684e221b28e73b9a0410af303e9bb97be10c 100644 (file)
@@ -886,7 +886,7 @@ pdata(u_char *dp, u_int maxlen)
 
        while (x-- > 0) {
            c = *dp++;
-           safeputchar(c);
+           safeputchar(gndo, c);
        }
 }
 #endif
index 7b58851b5fc57ec9c7f1e43849fca79bbb134ef3..fba40e2721fcd910262669a51d519e6f5bced96f 100644 (file)
@@ -209,14 +209,14 @@ eap_print(netdissect_options *ndo _U_,
             case EAP_TYPE_IDENTITY:
                 if (len - 5 > 0) {
                     printf(", Identity: ");
-                    safeputs((const char *)tptr+5, len-5);
+                    safeputs(gndo, tptr + 5, len - 5);
                 }
                 break;
 
             case EAP_TYPE_NOTIFICATION:
                 if (len - 5 > 0) {
                     printf(", Notification: ");
-                    safeputs((const char *)tptr+5, len-5);
+                    safeputs(gndo, tptr + 5, len - 5);
                 }
                 break;
 
index d49879b1afaf44a19d0d1ed10c59da09fbc03d9d..093d526efb8cd600874577c1e4a36daae7e208b7 100644 (file)
@@ -461,7 +461,7 @@ mfr_print(netdissect_options *ndo,
             case MFR_CTRL_IE_LINK_ID:
                 for (idx = 0; idx < ie_len && idx < MFR_ID_STRING_MAXLEN; idx++) {
                     if (*(tptr+idx) != 0) /* don't print null termination */
-                        safeputchar(*(tptr+idx));
+                        safeputchar(ndo, *(tptr + idx));
                     else
                         break;
                 }
index 7b5f3f3c2de6511677f9d7b702eacab95ee37b2b..a29a4f76b432efa616f6c55a50d31ba968f0147d 100644 (file)
@@ -1556,7 +1556,7 @@ dnsname_print(netdissect_options *ndo, const u_char *cp, const u_char *ep)
                                break;
                        }
                        while (i-- && cp < ep) {
-                               safeputchar(*cp);
+                               safeputchar(ndo, *cp);
                                cp++;
                        }
                        if (cp + 1 < ep && *cp)
@@ -1678,7 +1678,7 @@ icmp6_nodeinfo_print(netdissect_options *ndo, u_int icmp6len, const u_char *bp,
                                cp++;
                                ND_PRINT((ndo,", \""));
                                while (cp < ep) {
-                                       safeputchar(*cp);
+                                       safeputchar(ndo, *cp);
                                        cp++;
                                }
                                ND_PRINT((ndo,"\""));
@@ -1774,7 +1774,7 @@ icmp6_nodeinfo_print(netdissect_options *ndo, u_int icmp6len, const u_char *bp,
                                cp++;
                                ND_PRINT((ndo,", \""));
                                while (cp < ep) {
-                                       safeputchar(*cp);
+                                       safeputchar(ndo, *cp);
                                        cp++;
                                }
                                ND_PRINT((ndo,"\""));
index 2ebe083b213fedf6b11c24f897cb6e990f65ec48..09e3c544bfd32d5c1d82e1a9bd1e272b765981a9 100644 (file)
@@ -1397,7 +1397,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                        int i;
                        ND_PRINT((ndo," len=%d ", len));
                        for (i = 0; i < len; i++)
-                               safeputchar(data[i]);
+                               safeputchar(ndo, data[i]);
                        len = 0;
                        break;
                    }
index d699db04b6ed7029cce6c3e50c523a4132c8b841..c7e6baf93ddf42c68795597e0a4c80b0043cc916 100644 (file)
@@ -433,7 +433,7 @@ ldp_tlv_print(netdissect_options *ndo,
                 case LDP_FEC_MARTINI_IFPARM_DESC:
                     ND_PRINT((ndo, ": "));
                     for (idx = 2; idx < vc_info_tlv_len; idx++)
-                        safeputchar(*(tptr+idx));
+                        safeputchar(ndo, *(tptr + idx));
                     break;
 
                 case LDP_FEC_MARTINI_IFPARM_VCCV:
index e6cad7eb66f409b08430f56aea62d0c084ab47f2..f569da1eb364251f74155d594d3cb9ef3894e392 100644 (file)
@@ -679,7 +679,7 @@ lldp_private_8021_print(const u_char *tptr, u_int tlv_len)
             return hexdump;
         }
         printf("\n\t    vlan name: ");
-        safeputs((const char *)tptr+7, sublen);
+        safeputs(gndo, tptr + 7, sublen);
         break;
     case LLDP_PRIVATE_8021_SUBTYPE_PROTOCOL_IDENTITY:
         if (tlv_len < 5) {
@@ -690,7 +690,7 @@ lldp_private_8021_print(const u_char *tptr, u_int tlv_len)
             return hexdump;
         }
         printf("\n\t    protocol identity: ");
-        safeputs((const char *)tptr+5, sublen);
+        safeputs(gndo, tptr + 5, sublen);
         break;
     case LLDP_PRIVATE_8021_SUBTYPE_CONGESTION_NOTIFICATION:
         if(tlv_len<LLDP_PRIVATE_8021_SUBTYPE_CONGESTION_NOTIFICATION_LENGTH){
@@ -1006,7 +1006,7 @@ lldp_private_tia_print(const u_char *tptr, u_int tlv_len)
                    *(tptr+6));
 
             /* Country code */
-            safeputs((const char *)(tptr+7), 2);
+            safeputs(gndo, tptr + 7, 2);
 
             lci_len = lci_len-3;
             tptr = tptr + 9;
@@ -1034,7 +1034,7 @@ lldp_private_tia_print(const u_char *tptr, u_int tlv_len)
                    return hexdump;
                }
 
-                safeputs((const char *)tptr, ca_len);
+                safeputs(gndo, tptr, ca_len);
                 tptr += ca_len;
                 lci_len -= ca_len;
             }
@@ -1042,7 +1042,7 @@ lldp_private_tia_print(const u_char *tptr, u_int tlv_len)
 
         case LLDP_TIA_LOCATION_DATA_FORMAT_ECS_ELIN:
             printf("\n\t    ECS ELIN id ");
-            safeputs((const char *)tptr+5, tlv_len-5);
+            safeputs(gndo, tptr + 5, tlv_len - 5);
             break;
 
         default:
@@ -1079,7 +1079,7 @@ lldp_private_tia_print(const u_char *tptr, u_int tlv_len)
     case LLDP_PRIVATE_TIA_SUBTYPE_INVENTORY_ASSET_ID:
         printf("\n\t  %s ",
                tok2str(lldp_tia_inventory_values, "unknown", subtype));
-        safeputs((const char *)tptr+4, tlv_len-4);
+        safeputs(gndo, tptr + 4, tlv_len - 4);
         break;
 
     default:
@@ -1352,7 +1352,7 @@ lldp_mgmt_addr_tlv_print(const u_char *pptr, u_int len) {
         }
         if (oid_len) {
             printf("\n\t  OID length %u", oid_len);
-            safeputs((const char *)tptr+1, oid_len);
+            safeputs(gndo, tptr + 1, oid_len);
         }
     }
 
@@ -1427,7 +1427,7 @@ lldp_print(register const u_char *pptr, register u_int len) {
                 case LLDP_CHASSIS_CHASSIS_COMP_SUBTYPE:
                 case LLDP_CHASSIS_INTF_ALIAS_SUBTYPE:
                 case LLDP_CHASSIS_PORT_COMP_SUBTYPE:
-                    safeputs((const char *)tptr+1, tlv_len-1);
+                    safeputs(gndo, tptr + 1, tlv_len - 1);
                     break;
 
                 case LLDP_CHASSIS_NETWORK_ADDR_SUBTYPE:
@@ -1468,7 +1468,7 @@ lldp_print(register const u_char *pptr, register u_int len) {
                 case LLDP_PORT_AGENT_CIRC_ID_SUBTYPE:
                 case LLDP_PORT_INTF_ALIAS_SUBTYPE:
                 case LLDP_PORT_PORT_COMP_SUBTYPE:
-                    safeputs((const char *)tptr+1, tlv_len-1);
+                    safeputs(gndo, tptr + 1, tlv_len - 1);
                     break;
 
                 case LLDP_PORT_NETWORK_ADDR_SUBTYPE:
@@ -1498,7 +1498,7 @@ lldp_print(register const u_char *pptr, register u_int len) {
         case LLDP_PORT_DESCR_TLV:
             if (vflag) {
                 printf(": ");
-                safeputs((const char *)tptr, tlv_len);
+                safeputs(gndo, tptr, tlv_len);
             }
             break;
 
@@ -1508,13 +1508,13 @@ lldp_print(register const u_char *pptr, register u_int len) {
              * similar to the CDP printer.
              */
             printf(": ");
-            safeputs((const char *)tptr, tlv_len);
+            safeputs(gndo, tptr, tlv_len);
             break;
 
         case LLDP_SYSTEM_DESCR_TLV:
             if (vflag) {
                 printf("\n\t  ");
-                safeputs((const char *)tptr, tlv_len);
+                safeputs(gndo, tptr, tlv_len);
             }
             break;
 
index 6272ae2dac407c0ffa2d287d9a89cff64e9f8b5f..e4e80c7530575e76a439221b1f856d57228584eb 100644 (file)
@@ -200,7 +200,7 @@ lwres_printname(size_t l, const char *p0)
 
        printf(" ");
        for (i = 0; i < l; i++)
-               safeputchar(*p++);
+               safeputchar(gndo, *p++);
        p++;    /* skip terminating \0 */
 
        return p - p0;
index 23fb1ce0b310f71013603c1afb5b929b091188a6..b36a61b5f71931d79959b3a58646de5e0ac3b710 100644 (file)
@@ -1110,7 +1110,7 @@ ospf_print(register const u_char *bp, register u_int length,
 
                case OSPF_AUTH_SIMPLE:
                         printf("\n\tSimple text password: ");
-                        safeputs((const char *)op->ospf_authdata, OSPF_AUTH_SIMPLE_LEN);
+                        safeputs(gndo, op->ospf_authdata, OSPF_AUTH_SIMPLE_LEN);
                        break;
 
                case OSPF_AUTH_MD5:
index c442cb5f3b656c505163751e22917016ea7097bc..4c07bb63d00384341aaa31126484100d44bbab71 100644 (file)
@@ -880,7 +880,7 @@ handle_chap(const u_char *p, int length)
                printf(", Name ");
                for (i = 0; i < name_size; i++) {
                        TCHECK(*p);
-                       safeputchar(*p++);
+                       safeputchar(gndo, *p++);
                }
                break;
        case CHAP_SUCC:
@@ -889,7 +889,7 @@ handle_chap(const u_char *p, int length)
                printf(", Msg ");
                for (i = 0; i< msg_size; i++) {
                        TCHECK(*p);
-                       safeputchar(*p++);
+                       safeputchar(gndo, *p++);
                }
                break;
        }
@@ -955,7 +955,7 @@ handle_pap(const u_char *p, int length)
                printf(", Peer ");
                for (i = 0; i < peerid_len; i++) {
                        TCHECK(*p);
-                       safeputchar(*p++);
+                       safeputchar(gndo, *p++);
                }
 
                if (length - (p - p0) < 1)
@@ -968,7 +968,7 @@ handle_pap(const u_char *p, int length)
                printf(", Name ");
                for (i = 0; i < passwd_len; i++) {
                        TCHECK(*p);
-                       safeputchar(*p++);
+                       safeputchar(gndo, *p++);
                }
                break;
        case PAP_AACK:
@@ -983,7 +983,7 @@ handle_pap(const u_char *p, int length)
                printf(", Msg ");
                for (i = 0; i< msg_len; i++) {
                        TCHECK(*p);
-                       safeputchar(*p++);
+                       safeputchar(gndo, *p++);
                }
                break;
        }
index 8d2f02643a0526b9cf74e223df2d4b3dd341c7fb..adf1829b19a24c23e600dad58b80487fbbaf57a9 100644 (file)
@@ -1143,7 +1143,7 @@ _U_
                     return-1;
                 printf("%s  Session Name: ", ident);
                 for (i = 0; i < namelen; i++)
-                    safeputchar(*(obj_tptr+4+i));
+                    safeputchar(gndo, *(obj_tptr + 4 + i));
                 printf("%s  Setup Priority: %u, Holding Priority: %u, Flags: [%s] (%#x)",
                        ident,
                        (int)*obj_tptr,
index a73e70a17bccd804ccb7bcff67f25848e499b877..71d1bc3434539c86276bf11e9a82d96c7a191fe4 100644 (file)
@@ -39,7 +39,7 @@ sip_print(register const u_char *pptr, register u_int len)
     for (idx = 0; idx < len; idx++) {
         TCHECK2(*(pptr+idx), 2);
         if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */
-            safeputchar(*(pptr+idx));
+            safeputchar(gndo, *(pptr + idx));
         } else {
             printf("\n\t");
             idx+=1;
index 40c8a92466d91fe29a42f40b0ee07a293f98afd2..d332f67f5012f0937b29bebbe5b413d09ec2c320 100644 (file)
@@ -133,7 +133,7 @@ syslog_print(register const u_char *pptr, register u_int len)
     /* print the syslog text in verbose mode */
     for (; msg_off < len; msg_off++) {
         TCHECK2(*(pptr+msg_off), 1);
-        safeputchar(*(pptr+msg_off));
+        safeputchar(gndo, *(pptr + msg_off));
     }
 
     if (vflag > 1)
index 32ea72467779c391ea5c9ca5f9ad84ba05fcb138..4e970038bb86c4460944cae87959fd558e8a4a48 100644 (file)
@@ -777,7 +777,7 @@ print_tcp_rst_data(register const u_char *sp, u_int length)
         putchar(' ');
         while (length-- && sp <= snapend) {
                 c = *sp++;
-                safeputchar(c);
+                safeputchar(gndo, c);
         }
         putchar(']');
 }
index bf25bf7a0eb0ef1a214a8ac81ebe87ec8ef036ee..e583f44525b5e0dcd15486e398fb3655726dfa93 100644 (file)
@@ -179,7 +179,7 @@ vqp_print(netdissect_options *ndo, register const u_char *pptr, register u_int l
        case VQP_OBJ_VLAN_NAME:
        case VQP_OBJ_VTP_DOMAIN:
        case VQP_OBJ_ETHERNET_PKT:
-            safeputs((const char *)tptr, vqp_obj_len);
+            safeputs(ndo, tptr, vqp_obj_len);
             break;
             /* those objects have similar semantics - fall through */
        case VQP_OBJ_MAC_ADDRESS:
index da8612324fb2f5dc6f174d1b3bca48ef747d2cd3..f6917c0287dc6de5174f2fcbc3128862d968ca1e 100644 (file)
--- a/smbutil.c
+++ b/smbutil.c
@@ -245,7 +245,7 @@ print_asc(const unsigned char *buf, int len)
 {
     int i;
     for (i = 0; i < len; i++)
-       safeputchar(buf[i]);
+       safeputchar(gndo, buf[i]);
 }
 
 static const char *
diff --git a/util.c b/util.c
index ff406025c9929c87b3d104eb1318e548ee727883..822b60e5e557d90b1681fe7dcd91a44b3b7f955b 100644 (file)
--- a/util.c
+++ b/util.c
@@ -578,27 +578,23 @@ read_infile(char *fname)
 }
 
 void
-safeputs(const char *s, int maxlen)
+safeputs(netdissect_options *ndo,
+         const u_char *s, const u_int maxlen)
 {
-       int idx = 0;
+       u_int idx = 0;
 
        while (*s && idx < maxlen) {
-               safeputchar(*s);
-                idx++;
+               safeputchar(ndo, *s);
+               idx++;
                s++;
        }
 }
 
 void
-safeputchar(int c)
+safeputchar(netdissect_options *ndo,
+            const u_char c)
 {
-       unsigned char ch;
-
-       ch = (unsigned char)(c & 0xff);
-       if (ch < 0x80 && ND_ISPRINT(ch))
-               printf("%c", ch);
-       else
-               printf("\\0x%02x", ch);
+       ND_PRINT((ndo, (c < 0x80 && ND_ISPRINT(c)) ? "%c" : "\\0x%02x", c));
 }
 
 #ifdef LBL_ALIGN