diff options
Diffstat (limited to 'main/openswan/openswan-libreswan-backport-949437-x509dn.patch')
-rw-r--r-- | main/openswan/openswan-libreswan-backport-949437-x509dn.patch | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/main/openswan/openswan-libreswan-backport-949437-x509dn.patch b/main/openswan/openswan-libreswan-backport-949437-x509dn.patch deleted file mode 100644 index 2d41293771..0000000000 --- a/main/openswan/openswan-libreswan-backport-949437-x509dn.patch +++ /dev/null @@ -1,79 +0,0 @@ -diff --git a/lib/libopenswan/x509dn.c b/lib/libopenswan/x509dn.c -index 7731856..43c4bb5 100644 ---- a/lib/libopenswan/x509dn.c -+++ b/lib/libopenswan/x509dn.c -@@ -477,11 +477,25 @@ static const x501rdn_t x501rdns[] = { - /* Maximum length of ASN.1 distinquished name */ - #define ASN1_BUF_LEN 512 - -+static void format_chunk(chunk_t *ch, const char *format, ...) PRINTF_LIKE(2); -+ - static void --update_chunk(chunk_t *ch, int n) -+format_chunk(chunk_t *ch, const char *format, ...) - { -- n = (n > -1 && n < (int)ch->len)? n : (int)ch->len-1; -- ch->ptr += n; ch->len -= n; -+ if (ch->len > 0) { -+ size_t len = ch->len; -+ va_list args; -+ va_start(args, format); -+ int ret = vsnprintf((char *)ch->ptr, len, format, args); -+ va_end(args); -+ if (ret < 0 || ret > len) { -+ ch->ptr += len; -+ ch->len = 0; -+ } else { -+ ch->ptr += ret; -+ ch->len -= ret; -+ } -+ } - } - - -@@ -612,9 +626,7 @@ dn_parse(chunk_t dn, chunk_t *str) - err_t ugh; - - if(dn.ptr == NULL) { -- const char *e = "(empty)"; -- strncpy((char *)str->ptr, e, str->len); -- update_chunk(str, strlen(e)); -+ format_chunk(str, "(empty)"); - return NULL; - } - ugh = init_rdn(dn, &rdn, &attribute, &next); -@@ -632,19 +644,17 @@ dn_parse(chunk_t dn, chunk_t *str) - if (first) /* first OID/value pair */ - first = FALSE; - else /* separate OID/value pair by a comma */ -- update_chunk(str, snprintf((char *)str->ptr,str->len,", ")); -+ format_chunk(str, ", "); - - /* print OID */ - oid_code = known_oid(oid); - if (oid_code == OID_UNKNOWN) /* OID not found in list */ - hex_str(oid, str); - else -- update_chunk(str, snprintf((char *)str->ptr,str->len,"%s", -- oid_names[oid_code].name)); -+ format_chunk(str, "%s", oid_names[oid_code].name); - - /* print value */ -- update_chunk(str, snprintf((char *)str->ptr,str->len,"=%.*s", -- (int)value.len,value.ptr)); -+ format_chunk(str, "=%.*s", (int)value.len, value.ptr); - } - return NULL; - } -@@ -684,9 +694,9 @@ void - hex_str(chunk_t bin, chunk_t *str) - { - u_int i; -- update_chunk(str, snprintf((char *)str->ptr,str->len,"0x")); -+ format_chunk(str, "0x"); - for (i=0; i < bin.len; i++) -- update_chunk(str, snprintf((char *)str->ptr,str->len,"%02X",*bin.ptr++)); -+ format_chunk(str, "%02X", *bin.ptr++); - } - - |