]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
sync getrrsetbyname.c with recent upstream changes
authorDamien Miller <djm@mindrot.org>
Tue, 7 May 2024 23:43:59 +0000 (09:43 +1000)
committerDamien Miller <djm@mindrot.org>
Tue, 7 May 2024 23:43:59 +0000 (09:43 +1000)
openbsd-compat/getrrsetbyname.c

index 8f593984066e976cf898cd7d05383623add2964f..ad35148c929869bec986bb402cfe214062359395 100644 (file)
@@ -328,13 +328,14 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
 
                if (rdata) {
                        rdata->rdi_length = rr->size;
-                       rdata->rdi_data   = malloc(rr->size);
-
-                       if (rdata->rdi_data == NULL) {
-                               result = ERRSET_NOMEMORY;
-                               goto fail;
+                       if (rr->size != 0) {
+                               rdata->rdi_data   = malloc(rr->size);
+                               if (rdata->rdi_data == NULL) {
+                                       result = ERRSET_NOMEMORY;
+                                       goto fail;
+                               }
+                               memcpy(rdata->rdi_data, rr->rdata, rr->size);
                        }
-                       memcpy(rdata->rdi_data, rr->rdata, rr->size);
                }
        }
        free_dns_response(response);
@@ -577,12 +578,13 @@ parse_dns_rrsection(const u_char *answer, int size, const u_char **cp,
 
                /* rdata itself */
                NEED(curr->size);
-               curr->rdata = malloc(curr->size);
-               if (curr->rdata == NULL) {
-                       free_dns_rr(head);
-                       return (NULL);
+               if (curr->size != 0) {
+                       if ((curr->rdata = malloc(curr->size)) == NULL) {
+                               free_dns_rr(head);
+                               return (NULL);
+                       }
+                       memcpy(curr->rdata, *cp, curr->size);
                }
-               memcpy(curr->rdata, *cp, curr->size);
                *cp += curr->size;
        }
 #undef NEED