Skip to content

Commit 594bd4a

Browse files
committed
python fixes
1 parent 9ed2f4b commit 594bd4a

2 files changed

Lines changed: 39 additions & 17 deletions

File tree

src/internal.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26285,6 +26285,11 @@ int SendData(WOLFSSL* ssl, const void* data, size_t sz)
2628526285
if (sent == (word32)sz) break;
2628626286

2628726287
buffSz = (word32)sz - sent;
26288+
{
26289+
int maxFrag = wolfSSL_GetMaxFragSize(ssl);
26290+
if (maxFrag > 0 && (int)buffSz > maxFrag)
26291+
buffSz = (word32)maxFrag;
26292+
}
2628826293
outputSz = wolfssl_local_GetRecordSize(ssl, (word32)buffSz, 1);
2628926294
#if defined(WOLFSSL_DTLS)
2629026295
if (ssl->options.dtls) {

src/x509.c

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -657,17 +657,25 @@ static int DNS_to_GENERAL_NAME(WOLFSSL_GENERAL_NAME* gn, DNS_entry* dns)
657657
if (gn->d.registeredID == NULL) {
658658
return WOLFSSL_FAILURE;
659659
}
660-
gn->d.registeredID->obj = (const unsigned char*)XMALLOC(dns->len,
661-
gn->d.registeredID->heap, DYNAMIC_TYPE_ASN1);
662-
if (gn->d.registeredID->obj == NULL) {
663-
/* registeredID gets free'd up by caller after failure */
664-
return WOLFSSL_FAILURE;
660+
{
661+
/* Store DER-encoded OID (tag + length + content) in obj */
662+
word32 derSz = 1 + SetLength(dns->len, NULL) + dns->len;
663+
byte* der = (byte*)XMALLOC(derSz,
664+
gn->d.registeredID->heap, DYNAMIC_TYPE_ASN1);
665+
if (der == NULL) {
666+
return WOLFSSL_FAILURE;
667+
}
668+
{
669+
word32 idx = 0;
670+
der[idx++] = ASN_OBJECT_ID;
671+
idx += SetLength(dns->len, der + idx);
672+
XMEMCPY(der + idx, dns->name, dns->len);
673+
}
674+
gn->d.registeredID->obj = der;
675+
gn->d.registeredID->objSz = derSz;
665676
}
666677
gn->d.registeredID->dynamic |= WOLFSSL_ASN1_DYNAMIC_DATA;
667-
XMEMCPY((byte*)gn->d.registeredID->obj, dns->ridString, dns->len);
668-
gn->d.registeredID->objSz = dns->len;
669678
gn->d.registeredID->grp = oidCertExtType;
670-
gn->d.registeredID->nid = WC_NID_registeredAddress;
671679
break;
672680
#endif
673681

@@ -2529,19 +2537,28 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, int nid, int* c,
25292537
if (gn->d.registeredID == NULL) {
25302538
goto err;
25312539
}
2532-
gn->d.registeredID->obj =
2533-
(const unsigned char*)XMALLOC(dns->len,
2534-
gn->d.registeredID->heap, DYNAMIC_TYPE_ASN1);
2535-
if (gn->d.registeredID->obj == NULL) {
2536-
goto err;
2540+
{
2541+
/* Store DER-encoded OID (tag+length+content) */
2542+
word32 derSz = 1 + SetLength(dns->len, NULL)
2543+
+ dns->len;
2544+
byte* der = (byte*)XMALLOC(derSz,
2545+
gn->d.registeredID->heap,
2546+
DYNAMIC_TYPE_ASN1);
2547+
if (der == NULL) {
2548+
goto err;
2549+
}
2550+
{
2551+
word32 derIdx = 0;
2552+
der[derIdx++] = ASN_OBJECT_ID;
2553+
derIdx += SetLength(dns->len, der + derIdx);
2554+
XMEMCPY(der + derIdx, dns->name, dns->len);
2555+
}
2556+
gn->d.registeredID->obj = der;
2557+
gn->d.registeredID->objSz = derSz;
25372558
}
25382559
gn->d.registeredID->dynamic |=
25392560
WOLFSSL_ASN1_DYNAMIC_DATA;
2540-
XMEMCPY((byte*)gn->d.registeredID->obj,
2541-
dns->ridString, dns->len);
2542-
gn->d.registeredID->objSz = dns->len;
25432561
gn->d.registeredID->grp = oidCertExtType;
2544-
gn->d.registeredID->nid = WC_NID_registeredAddress;
25452562
break;
25462563
#endif /* WOLFSSL_RID_ALT_NAME */
25472564

0 commit comments

Comments
 (0)