]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Stop working on socket when socket() call returns an error.
authorRalph Dolmans <ralph@nlnetlabs.nl>
Thu, 30 Jan 2020 18:15:58 +0000 (19:15 +0100)
committerRalph Dolmans <ralph@nlnetlabs.nl>
Thu, 30 Jan 2020 18:15:58 +0000 (19:15 +0100)
- Check malloc return values in TLS session ticket code

doc/Changelog
services/outside_network.c
util/net_help.c

index 4c215c3a5b01ca78fa82f70d110cc0329f83d9f0..b152505456a4d5ddbab9916efaebc5993853c557 100644 (file)
@@ -4,6 +4,8 @@
        - Fix memory leak in do_auth_zone_transfer on success
        - Merge RPZ support into master. Only QNAME and Response IP triggers are
          supported.
+       - Stop working on socket when socket() call returns an error.
+       - Check malloc return values in TLS session ticket code
 
 30 January 2020: Wouter
        - Fix subnet tests for disabled DSA algorithm by default.
index f865f13c1390c7ca9b58559f7d0761c069695423..9876c215089c4ed0d218568ada3a28178385ac9c 100644 (file)
@@ -293,6 +293,9 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len)
        /* open socket */
        s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss);
 
+       if(s == -1)
+               return 0;
+
        if(!pick_outgoing_tcp(w, s))
                return 0;
 
index c1ff25d63d09f8fc20140c79adec8b0a6aa9fe6b..8f83ec001bd1efdb034f46c9ccccbf022e2cfc44 100644 (file)
@@ -1271,13 +1271,20 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses
                s++;
        }
        keys = calloc(s, sizeof(struct tls_session_ticket_key));
+       if(!keys)
+               return 0;
        memset(keys, 0, s*sizeof(*keys));
        ticket_keys = keys;
 
        for(p = tls_session_ticket_keys; p; p = p->next) {
                size_t n;
-               unsigned char *data = (unsigned char *)malloc(80);
+               unsigned char *data;
                FILE *f = fopen(p->str, "r");
+
+               data = (unsigned char *)malloc(80);
+               if(!data)
+                       return 0;
+
                if(!f) {
                        log_err("could not read tls-session-ticket-key %s: %s", p->str, strerror(errno));
                        free(data);