]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
x509/virt-san: a small OOM-correctness fix
authorAlexander Sosedkin <asosedkin@redhat.com>
Tue, 28 Apr 2026 13:26:32 +0000 (15:26 +0200)
committerAlexander Sosedkin <asosedkin@redhat.com>
Wed, 29 Apr 2026 13:35:03 +0000 (15:35 +0200)
Signed-off-by: Alexander Sosedkin <asosedkin@redhat.com>
lib/x509/virt-san.c

index 92fcab2c87a34844c06606cfe05e4f655fd1d912..6067ad1276cedb334cf883c817ae96d5b95c8192 100644 (file)
@@ -108,11 +108,7 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type,
                        if (ret < 0)
                                return gnutls_assert_val(ret);
 
-                       name->type = GNUTLS_SAN_OTHERNAME;
-                       name->san.data = encoded.data;
-                       name->san.size = encoded.size;
-                       name->othername_oid.data = (void *)gnutls_strdup(oid);
-                       name->othername_oid.size = strlen(oid);
+                       name->san = _gnutls_take_datum(&encoded);
                        break;
 
                case GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL:
@@ -120,15 +116,19 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type,
                                                            &name->san);
                        if (ret < 0)
                                return gnutls_assert_val(ret);
-
-                       name->othername_oid.data = (void *)gnutls_strdup(oid);
-                       name->othername_oid.size = strlen(oid);
-                       name->type = GNUTLS_SAN_OTHERNAME;
                        break;
 
                default:
                        return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
                }
+               ret = _gnutls_set_strdatum(&name->othername_oid, oid,
+                                          strlen(oid));
+               if (ret < 0) {
+                       gnutls_assert();
+                       _gnutls_free_datum(&name->san);
+                       return ret;
+               }
+               name->type = GNUTLS_SAN_OTHERNAME;
 
                gnutls_free(san->data);
        }