]> sourceware.org Git - systemtap.git/commitdiff
Don't accidentially use user space ntohs function.
authorMark Wielaard <mjw@redhat.com>
Sat, 11 Jul 2009 09:58:52 +0000 (11:58 +0200)
committerMark Wielaard <mjw@redhat.com>
Sat, 11 Jul 2009 09:58:52 +0000 (11:58 +0200)
The definition of ntohs comes from user space include headers
netinet/in.h which could define it as function instead of macro.
So use builtin kernel be16_to_cpu instead.

* tapset/aux_syscalls.stp (_struct_sockaddr_u): Define and use _stp_ntohs
  as be16_to_cpu.

tapset/aux_syscalls.stp

index 9cb7a3df8eeba4dbc2e74291c58143d09ecf1ca6..9347e46f375c8e19a9fd5ef2c231f3d8b7431c2d 100644 (file)
@@ -292,6 +292,9 @@ function _struct_sockaddr_u:string(uaddr:long, len:long)
 #define DADDR   (&inet->daddr)
 #endif
 
+// Use kernel builtin instead of picking up user space ntohs (function).
+#define _stp_ntohs be16_to_cpu
+
        //FIXME. Not done yet.
        char *str = THIS->__retvalue;
        const int strlen = MAXSTRINGLEN;
@@ -301,7 +304,7 @@ function _struct_sockaddr_u:string(uaddr:long, len:long)
                struct sockaddr_in *sin = (struct sockaddr_in *)buf;
                const unsigned char *addr = (unsigned char *)&sin->sin_addr;
                snprintf(str, strlen, "{AF_INET, %d.%d.%d.%d, %d}", 
-                       addr[0], addr[1], addr[2], addr[3], ntohs(sin->sin_port));
+                       addr[0], addr[1], addr[2], addr[3], _stp_ntohs(sin->sin_port));
        }
        else if ((sa->sa_family == AF_UNIX)&&(len == sizeof(struct sockaddr_un)))
        {       
@@ -318,7 +321,7 @@ function _struct_sockaddr_u:string(uaddr:long, len:long)
                // FIXME. Address is probably not correctly displayed
                struct sockaddr_in6 *sin = (struct sockaddr_in6 *)buf;
                snprintf(str, strlen, "{AF_INET6, %016llx, %d}", 
-                       *(long long *)&sin->sin6_addr, ntohs(sin->sin6_port));
+                       *(long long *)&sin->sin6_addr, _stp_ntohs(sin->sin6_port));
        }
        else if ((sa->sa_family == AF_PACKET)&&(len == sizeof(struct sockaddr_ll))) 
        {
This page took 0.029259 seconds and 5 git commands to generate.