]> granicus.if.org Git - python/commitdiff
Add sockaddr_alg to sock_addr_t (#234)
authorChristian Heimes <christian@python.org>
Wed, 22 Feb 2017 11:12:00 +0000 (12:12 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Wed, 22 Feb 2017 11:12:00 +0000 (12:12 +0100)
sock_addr_t is used to define the minimum size of any socket address on
the stack. Let's make sure that an AF_ALG address always fits. Coverity
complains because in theory, AF_ALG might be larger than any of the other
structs. In practice it already fits.

Closes Coverity CID 139894813989491398950

Signed-off-by: Christian Heimes <christian@python.org>
Modules/socketmodule.c
Modules/socketmodule.h

index 7aa213e082f8c1a1dd75b5742c542b8c90ea817c..63e87e6e4867ee09bfc23821e8735329f484aa88 100644 (file)
@@ -288,36 +288,6 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82&
 #include <net/if.h>
 #endif
 
-#ifdef HAVE_SOCKADDR_ALG
-#include <linux/if_alg.h>
-#ifndef AF_ALG
-#define AF_ALG 38
-#endif
-#ifndef SOL_ALG
-#define SOL_ALG 279
-#endif
-
-/* Linux 3.19 */
-#ifndef ALG_SET_AEAD_ASSOCLEN
-#define ALG_SET_AEAD_ASSOCLEN           4
-#endif
-#ifndef ALG_SET_AEAD_AUTHSIZE
-#define ALG_SET_AEAD_AUTHSIZE           5
-#endif
-/* Linux 4.8 */
-#ifndef ALG_SET_PUBKEY
-#define ALG_SET_PUBKEY                  6
-#endif
-
-#ifndef ALG_OP_SIGN
-#define ALG_OP_SIGN                     2
-#endif
-#ifndef ALG_OP_VERIFY
-#define ALG_OP_VERIFY                   3
-#endif
-
-#endif /* HAVE_SOCKADDR_ALG */
-
 /* Generic socket object definitions and includes */
 #define PySocket_BUILDING_SOCKET
 #include "socketmodule.h"
index 3cce927e0b35f0186ab428bf41fbe69c6953df63..03f982b91083f3d7220c2c754ba99a23fd02445d 100644 (file)
@@ -98,6 +98,37 @@ typedef int socklen_t;
 #include <sys/kern_control.h>
 #endif
 
+#ifdef HAVE_SOCKADDR_ALG
+#include <linux/if_alg.h>
+#ifndef AF_ALG
+#define AF_ALG 38
+#endif
+#ifndef SOL_ALG
+#define SOL_ALG 279
+#endif
+
+/* Linux 3.19 */
+#ifndef ALG_SET_AEAD_ASSOCLEN
+#define ALG_SET_AEAD_ASSOCLEN           4
+#endif
+#ifndef ALG_SET_AEAD_AUTHSIZE
+#define ALG_SET_AEAD_AUTHSIZE           5
+#endif
+/* Linux 4.8 */
+#ifndef ALG_SET_PUBKEY
+#define ALG_SET_PUBKEY                  6
+#endif
+
+#ifndef ALG_OP_SIGN
+#define ALG_OP_SIGN                     2
+#endif
+#ifndef ALG_OP_VERIFY
+#define ALG_OP_VERIFY                   3
+#endif
+
+#endif /* HAVE_SOCKADDR_ALG */
+
+
 #ifndef Py__SOCKET_H
 #define Py__SOCKET_H
 #ifdef __cplusplus
@@ -159,6 +190,9 @@ typedef union sock_addr {
 #ifdef HAVE_SYS_KERN_CONTROL_H
     struct sockaddr_ctl ctl;
 #endif
+#ifdef HAVE_SOCKADDR_ALG
+    struct sockaddr_alg alg;
+#endif
 } sock_addr_t;
 
 /* The object holding a socket.  It holds some extra information,