Don't use msg on error.
authorJan Hykel <jan.hykel@acision.com>
Sun, 16 Nov 2014 16:51:17 +0000 (16:51 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 17 Nov 2014 12:42:15 +0000 (12:42 +0000)
Don't attempt to access msg structure if recvmsg returns an error.

PR#3483
Reviewed-by: Stephen Henson <steve@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(cherry picked from commit 012aa9ec76b158179b4de44bb5de8b8472045eac)

crypto/bio/bss_dgram.c

index d9967e7272674ea3bb58c6b5a3ab899f4eeeafcb..8cad5b41dba50c0b7964662d4e83577fcbbf6c9d 100644 (file)
@@ -1034,6 +1034,13 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
                        msg.msg_flags = 0;
                        n = recvmsg(b->num, &msg, 0);
 
+                       if (n <= 0)
+                               {
+                               if (n < 0)
+                                       ret = n;
+                               break;
+                               }
+
                        if (msg.msg_controllen > 0)
                                {
                                for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg))
@@ -1073,13 +1080,6 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
                                        }
                                }
 
-                       if (n <= 0)
-                               {
-                               if (n < 0)
-                                       ret = n;
-                               break;
-                               }
-
                        if (msg.msg_flags & MSG_NOTIFICATION)
                                {
                                snp = (union sctp_notification*) out;