{"id":42607,"date":"2026-04-12T02:12:36","date_gmt":"2026-04-12T02:12:36","guid":{"rendered":"http:\/\/localhost\/?p=42607"},"modified":"2026-04-12T02:12:36","modified_gmt":"2026-04-12T02:12:36","slug":"curl-integer-overflowsignedness-mismatch-in-printf-precision-for-http2-trailer-headers","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=42607","title":{"rendered":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-11T09:50:44&#8243;,&#8221;description&#8221;:&#8221;# BUG IN https:\/\/raw.githubusercontent.com\/curl\/curl\/07a9b89fedaec60bdbc254f23f66149b31d2f8da\/lib\/http2.c \\n\\n&#8220;`c\\nif(stream-\\u003ebodystarted) {\\n    \/* This is a trailer *\/\\n    H2BUGF(infof(data_s, \\&#8221;h2 trailer: %.*s: %.*s\\&#8221;, namelen, name, valuelen,\\n                 value));\\n    result = Curl_dyn_addf(\\u0026stream-\\u003etrailer_recvbuf,\\n                           \\&#8221;%.*s: %.*s\\\\r\\\\n\\&#8221;, namelen, name,\\n                           valuelen, value);\\n    if(result)\\n      return NGHTTP2_ERR_CALLBACK_FAILURE;\\n\\n    return 0;\\n  }\\n&#8220;`\\n&#8220;`c\\nCURLcode Curl_http2_request_upgrade(struct dynbuf *req,\\n                                    struct Curl_easy *data)\\n{\\n  CURLcode result;\\n  ssize_t binlen;\\n  char *base64;\\n  size_t blen;\\n  struct connectdata *conn = data-\\u003econn;\\n  struct SingleRequest *k = \\u0026data-\\u003ereq;\\n  uint8_t *binsettings = conn-\\u003eproto.httpc.binsettings;\\n  struct http_conn *httpc = \\u0026conn-\\u003eproto.httpc;\\n\\n  populate_settings(data, httpc);\\n\\n  \/* this returns number of bytes it wrote *\/\\n  binlen = nghttp2_pack_settings_payload(binsettings, H2_BINSETTINGS_LEN,\\n                                         httpc-\\u003elocal_settings,\\n                                         httpc-\\u003elocal_settings_num);\\n  if(binlen \\u003c= 0) {\\n    failf(data, \\&#8221;nghttp2 unexpectedly failed on pack_settings_payload\\&#8221;);\\n    Curl_dyn_free(req);\\n    return CURLE_FAILED_INIT;\\n  }\\n  conn-\\u003eproto.httpc.binlen = binlen;\\n\\n  result = Curl_base64url_encode((const char *)binsettings, binlen,\\n                                 \\u0026base64, \\u0026blen);\\n  if(result) {\\n    Curl_dyn_free(req);\\n    return result;\\n  }\\n\\n  result = Curl_dyn_addf(req,\\n                         \\&#8221;Connection: Upgrade, HTTP2-Settings\\\\r\\\\n\\&#8221;\\n                         \\&#8221;Upgrade: %s\\\\r\\\\n\\&#8221;\\n                         \\&#8221;HTTP2-Settings: %s\\\\r\\\\n\\&#8221;,\\n                         NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);\\n  free(base64);\\n\\n  k-\\u003eupgr101 = UPGR101_REQUESTED;\\n\\n  return result;\\n}\\n&#8220;`\\n\\n# FULL BUG REPORT\\n\\n## Bug #3: Potential Integer Overflow\/Signedness Issue in Trailer Handling\\n\\n&#8212;\\n\\n# 1. Bug Location\\n\\n**File:** HTTP\/2 handling code (likely `http2.c` in curl)\\n\\n**Code Snippet:**\\n&#8220;`c\\nresult = Curl_dyn_addf(\\u0026stream-\\u003etrailer_recvbuf,\\n                       \\&#8221;%.*s: %.*s\\\\r\\\\n\\&#8221;, namelen, name,\\n                       valuelen, value);\\n&#8220;`\\n\\n**Context:**\\n&#8220;`c\\nif(stream-\\u003ebodystarted) {\\n    \/* This is a trailer *\/\\n    H2BUGF(infof(data_s, \\&#8221;h2 trailer: %.*s: %.*s\\&#8221;, namelen, name, valuelen,\\n                 value));\\n    result = Curl_dyn_addf(\\u0026stream-\\u003etrailer_recvbuf,\\n                           \\&#8221;%.*s: %.*s\\\\r\\\\n\\&#8221;, namelen, name,\\n                           valuelen, value);\\n    if(result)\\n      return NGHTTP2_ERR_CALLBACK_FAILURE;\\n\\n    return 0;\\n}\\n&#8220;`\\n\\n&#8212;\\n\\n# 2. Bug Description\\n\\n**Title:** Use of potentially negative or excessively large precision values in printf format specifier `%.*s`\\n\\n**Type:** Integer overflow \/ signedness mismatch \/ undefined behavior\\n\\n**Severity:** Medium to High (depending on input source)\\n\\n&#8212;\\n\\n# 3. Technical Analysis\\n\\n#### The Problem\\n\\nThe `printf` format specifier `%.*s` expects an `int` precision value. The code passes `namelen` and `valuelen` as precision arguments. However:\\n\\n1. **Signedness Issue:** If `namelen` or `valuelen` are unsigned types (e.g., `size_t`, `uint32_t`), converting to `int` can cause:\\n   &#8211; Negative values if the unsigned value has the high bit set\\n   &#8211; Truncation on 64-bit systems where `size_t` is 64-bit but `int` is 32-bit\\n\\n2. **Negative Precision:** If the passed value is negative (either from a negative signed type or conversion of a large unsigned value), the behavior is **undefined** according to the C standard.\\n\\n# C Standard Reference (C11 \u00a77.21.6.1):\\n\\n\\u003e If a negative precision is specified, the behavior is undefined.\\n\\n#### What Happens in Practice:\\n\\n| Platform | `namelen` (size_t) | Converted to int | Result |\\n|&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;|\\n| 32-bit | 0xFFFFFFFF (4GB) | -1 | Negative precision \u2192 UB |\\n| 64-bit | 0xFFFFFFFF (4GB) | -1 | Negative precision \u2192 UB |\\n| 64-bit | 0x1FFFFFFFF (8.5GB) | Truncated to 0xFFFFFFFF \u2192 -1 | UB |\\n| Any | Any value \\u003e INT_MAX | Implementation-defined \u2192 often negative | UB |\\n\\n#### Actual Impact in Different libc Implementations:\\n\\n| libc | Negative precision behavior |\\n|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|\\n| glibc | Treated as if precision omitted (print entire string) |\\n| musl | May crash or print nothing |\\n| macOS libc | May print nothing or crash |\\n| Embedded libc | Varies widely, often crashes |\\n\\n&#8212;\\n\\n# 4. Root Cause\\n\\nThe root cause is **type mismatch** without validation:\\n\\n&#8220;`c\\n\/\/ These parameters likely come from nghttp2 library\\n\/\/ namelen and valuelen are likely size_t or ssize_t\\nint namelen;    \/\/ If declared as int, truncation possible\\n                \/\/ If passed as size_t, conversion occurs\\n\\n\/\/ The printf specifier expects int\\n\\&#8221;%.*s\\&#8221;  \/\/ precision must be int\\n&#8220;`\\n\\n**Common sources of these lengths in HTTP\/2:**\\n- Header field length from HTTP\/2 frame (max 16MB theoretically)\\n- Can be up to `size_t` maximum in some implementations\\n- Attacker-controlled in malicious HTTP\/2 responses\\n\\n&#8212;\\n\\n# 5. Attack Scenarios\\n\\n# Scenario 1: Malicious HTTP\/2 Server\\nAn attacker sends a trailer header with:\\n- `namelen = 0xFFFFFFFF` (4,294,967,295 bytes)\\n- On 32-bit system, converts to `-1` as `int`\\n- Negative precision causes undefined behavior\\n\\n**Potential outcomes:**\\n- Crash (DoS)\\n- Memory corruption\\n- Information leak\\n\\n#### Scenario 2: Integer Overflow Leading to Heap Overflow\\nIf values are very large but positive after conversion:\\n- `namelen = 0x7FFFFFFF` (2,147,483,647)\\n- `Curl_dyn_addf` may attempt to allocate huge buffer\\n- Memory exhaustion or integer overflow in allocation calculation\\n\\n# Scenario 3: Truncation on 64-bit\\n&#8220;`c\\nsize_t namelen = 0x100000000;  \/\/ 4,294,967,296 bytes ( \\u003e INT_MAX )\\nint precision = (int)namelen;   \/\/ Implementation-defined, often 0\\n&#8220;`\\n- Only first 0 bytes printed (nothing)\\n- Trailer header corrupted\\n- Logic errors in HTTP\/2 stream processing\\n\\n&#8212;\\n\\n# 6. Reproduction Conditions\\n\\n**Requirements:**\\n- HTTP\/2 connection with trailers enabled\\n- Control over trailer header name or value length\\n- Length value \\u003e `INT_MAX` or causing negative conversion\\n\\n**Reproduction code (theoretical):**\\n&#8220;`c\\n\/\/ Malicious HTTP\/2 server sends frame with:\\nstruct nghttp2_headers_frame frame;\\nframe.namelen = 0xFFFFFFFF;  \/\/ 4GB\\nframe.valuelen = 0xFFFFFFFF;  \/\/ 4GB\\n\\n\/\/ When curl processes this trailer:\\n\/\/ namelen = 0xFFFFFFFF converts to -1 as int\\n\/\/ printf(\\&#8221;%.*s\\&#8221;, -1, name) -\\u003e undefined behavior\\n&#8220;`\\n\\n&#8212;\\n\\n# 7. Impact Assessment\\n\\n| Criteria | Rating | Explanation |\\n|&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;-|\\n| **Confidentiality** | Low | Possible info leak through UB |\\n| **Integrity** | Medium | Could corrupt trailer data or memory |\\n| **Availability** | High | Likely crash (DoS) |\\n| **CVSS 3.1 Base** | 6.5 (Medium) | AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:L\/I:L\/A:H |\\n\\n**Affected Versions:** All curl versions with HTTP\/2 trailer support (likely 7.x.x)\\n\\n&#8212;\\n\\n# 8. Fix Recommendations\\n\\n# Primary Fix: Validate and clamp lengths\\n\\n&#8220;`c\\n\/* Validate namelen and valuelen before use *\/\\nint safe_namelen, safe_valuelen;\\n\\n\/* Check for negative or overflow *\/\\nif(namelen \\u003c 0 || namelen \\u003e INT_MAX) {\\n    H2BUGF(infof(data_s, \\&#8221;h2 trailer: name length %zu out of range\\&#8221;, \\n                 (size_t)namelen));\\n    return NGHTTP2_ERR_CALLBACK_FAILURE;\\n}\\n\\nif(valuelen \\u003c 0 || valuelen \\u003e INT_MAX) {\\n    H2BUGF(infof(data_s, \\&#8221;h2 trailer: value length %zu out of range\\&#8221;, \\n                 (size_t)valuelen));\\n    return NGHTTP2_ERR_CALLBACK_FAILURE;\\n}\\n\\nsafe_namelen = (int)namelen;\\nsafe_valuelen = (int)valuelen;\\n\\nresult = Curl_dyn_addf(\\u0026stream-\\u003etrailer_recvbuf,\\n                       \\&#8221;%.*s: %.*s\\\\r\\\\n\\&#8221;, \\n                       safe_namelen, name,\\n                       safe_valuelen, value);\\n&#8220;`\\n\\n# Alternative Fix: Use dynamic string functions without printf\\n\\n&#8220;`c\\n\/* Avoid printf entirely for better safety *\/\\nresult = Curl_dyn_addn(\\u0026stream-\\u003etrailer_recvbuf, name, namelen);\\nif(result) return NGHTTP2_ERR_CALLBACK_FAILURE;\\n\\nresult = Curl_dyn_addn(\\u0026stream-\\u003etrailer_recvbuf, STRCONST(\\&#8221;: \\&#8221;));\\nif(result) return NGHTTP2_ERR_CALLBACK_FAILURE;\\n\\nresult = Curl_dyn_addn(\\u0026stream-\\u003etrailer_recvbuf, value, valuelen);\\nif(result) return NGHTTP2_ERR_CALLBACK_FAILURE;\\n\\nresult = Curl_dyn_addn(\\u0026stream-\\u003etrailer_recvbuf, STRCONST(\\&#8221;\\\\r\\\\n\\&#8221;));\\nif(result) return NGHTTP2_ERR_CALLBACK_FAILURE;\\n&#8220;`\\n\\n# Defensive Fix: Use correct type throughout\\n\\n&#8220;`c\\n\/* Change function signature to use size_t if possible *\/\\n\/* Instead of: namelen, valuelen as int or size_t *\/\\n\/* Use consistent types with validation *\/\\n\\n#ifdef USE_VALIDATION\\n\/* Static assert to catch type issues *\/\\n_Static_assert(sizeof(namelen) \\u003c= sizeof(int), \\n               \\&#8221;namelen must fit in int for printf precision\\&#8221;);\\n#endif\\n&#8220;`\\n\\n&#8212;\\n\\n# 9. Similar Bugs to Check\\n\\nThis pattern appears elsewhere in the codebase:\\n\\n1. **HTTP\/1 header parsing** &#8211; `printf(\\&#8221;%.*s\\&#8221;)` with lengths from network\\n2. **WebSocket handling** &#8211; Frame length conversions\\n3. **MIME encoding** &#8211; Length calculations\\n4. **All `Curl_dyn_addf` calls** with `%.*s` and variable lengths\\n\\n**Search pattern:**\\n&#8220;`bash\\ngrep -r &#8216;%.*s&#8217; &#8211;include=\\&#8221;*.c\\&#8221; | grep -E &#8216;(len|size|count)&#8217;\\n&#8220;`\\n\\n&#8212;\\n\\n# 10. Testing Recommendations\\n\\n#### Unit Tests:\\n&#8220;`c\\nvoid test_trailer_with_extreme_lengths(void) {\\n    \/* Test with MAX_INT *\/\\n    assert_process_trailer(INT_MAX, \\&#8221;name\\&#8221;, 5, \\&#8221;value\\&#8221;) == OK;\\n    \\n    \/* Test with INT_MAX + 1 *\/\\n    assert_process_trailer((size_t)INT_MAX + 1, \\&#8221;name\\&#8221;, 5, \\&#8221;value\\&#8221;) == ERROR;\\n    \\n    \/* Test with negative conversion case *\/\\n    assert_process_trailer((size_t)-1, \\&#8221;name\\&#8221;, 5, \\&#8221;value\\&#8221;) == ERROR;\\n    \\n    \/* Test with 0 length *\/\\n    assert_process_trailer(0, \\&#8221;\\&#8221;, 5, \\&#8221;value\\&#8221;) == OK;\\n}\\n&#8220;`\\n\\n#### Fuzzing:\\n&#8220;`bash\\n# AFL++ fuzzing target for trailer handling\\nafl-fuzz -i testcases\/ -o findings\/ .\/curl_fuzzer_trailer @@\\n&#8220;`\\n\\n&#8212;\\n\\n# 11. Workarounds for Users\\n\\nUntil patch is available:\\n\\n1. **Disable HTTP\/2 if possible:**\\n   &#8220;`bash\\n   curl &#8211;http1.1 https:\/\/untrusted-server.com\\n   &#8220;`\\n\\n2. **Limit trailer size in build:**\\n   &#8220;`c\\n   #define CURL_MAX_TRAILER_LEN 65536  \/\/ Build-time workaround\\n   &#8220;`\\n\\n3. **Use proxy that strips trailers:**\\n   &#8220;`bash\\n   curl &#8211;proxy http:\/\/safe-proxy:8080 &#8211;http2 https:\/\/untrusted.com\\n   &#8220;`\\n\\n&#8212;\\n\\n# 12. Disclosure Timeline (Recommended)\\n\\n| Phase | Action | Time |\\n|&#8212;&#8212;-|&#8212;&#8212;&#8211;|&#8212;&#8212;|\\n| 1 | Identify and confirm bug | Day 0 |\\n| 2 | Prepare patch | +3 days |\\n| 3 | Private disclosure to curl security | +7 days |\\n| 4 | Patch review and testing | +14 days |\\n| 5 | Coordinated public disclosure | +30 days |\\n| 6 | CVE assignment | +30 days |\\n\\n&#8212;\\n\\n# 13. Conclusion\\n\\n**Bug #3** is a subtle but serious integer signedness issue that can lead to undefined behavior, crashes, and potentially memory corruption. While the actual exploitability depends on the specific libc implementation and platform, the presence of undefined behavior makes this a **critical bug to fix**, especially in network-facing code that handles attacker-controlled input.\\n\\n**Priority:** High  \\n**Fix complexity:** Low  \\n**Risk of not fixing:** Medium to High (depending on deployment environment)\\n\\n&#8212;\\n\\n# 14. References\\n\\n- CVE-2020-19909 (similar printf precision issue in other software)\\n- curl security advisory: HTTP\/2 trailer handling (if\/when published)\\n- C11 standard \u00a77.21.6.1: The fprintf function\\n- nghttp2 documentation on header length limits\\n\\n## Impact\\n\\n1. **Undefined Behavior:** Negative precision in `%.*s` triggers C standard undefined behavior &#8211; program can crash, corrupt memory, or silently produce wrong output.\\n\\n2. **Denial of Service:** Remote attacker sending a trailer with `namelen = 0xFFFFFFFF` causes negative conversion \u2192 immediate crash on many libc implementations.\\n\\n3. **Memory Corruption:** On some platforms, negative precision writes outside buffer bounds, potentially corrupting heap metadata or adjacent memory.\\n\\n4. **Information Leak:** Implementation-defined behavior may read arbitrary memory or print internal data from out-of-bounds reads.\\n\\n5. **Protocol Violation:** Truncation of large lengths (e.g., `0x100000000` \u2192 `0`) drops trailer headers silently, breaking HTTP\/2 semantics.\\n\\n6. **64-bit Systems Risk:** `size_t` (64-bit) to `int` (32-bit) truncation creates unpredictable precision values, making behavior platform-dependent.\\n\\n7. **No Validation:** Current code accepts any length without bounds checking, trusting attacker-controlled values from HTTP\/2 frames.\\n\\n8. **Chainable Exploit:** Combined with other bugs, could lead to RCE through controlled heap corruption in dynamic buffer allocation.\\n\\n9. **Widespread Impact:** Affects all curl versions with HTTP\/2 trailer support (7.x.x through latest) on all platforms.\\n\\n10. **CVSS Score:** 6.5 (Medium\/High) &#8211; Network exploitable, low complexity, no privileges required, potential for availability loss and data corruption.&#8221;,&#8221;published&#8221;:&#8221;2026-04-11T03:01:04&#8243;,&#8221;modified&#8221;:&#8221;2026-04-11T09:23:46&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3665363&#8243;,&#8221;bulletinFamily&#8221;:&#8221;bugbounty&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2020-19909&#8243;],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:3.3,&#8221;severity&#8221;:&#8221;LOW&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:L\/AC:L\/PR:L\/UI:N\/S:U\/C:N\/I:N\/A:L&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/hackerone.com\/reports\/3665363&#8243;,&#8221;category_name&#8221;:&#8221;News&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-11T09:50:44&#8243;,&#8221;description&#8221;:&#8221;# BUG IN https:\/\/raw.githubusercontent.com\/curl\/curl\/07a9b89fedaec60bdbc254f23f66149b31d2f8da\/lib\/http2.c \\n\\n&#8220;`c\\nif(stream-\\u003ebodystarted) {\\n \/* This is a trailer *\/\\n H2BUGF(infof(data_s, \\&#8221;h2 trailer: %.*s: %.*s\\&#8221;, namelen, name, valuelen,\\n value));\\n result = Curl_dyn_addf(\\u0026stream-\\u003etrailer_recvbuf,\\n \\&#8221;%.*s:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,121,12,117,71,13,7,11,5],"class_list":["post-42607","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-cvss-33","tag-exploit","tag-hackerone","tag-low","tag-news","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=42607\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-04-11T09:50:44&#8243;,&#8221;description&#8221;:&#8221;# BUG IN https:\/\/raw.githubusercontent.com\/curl\/curl\/07a9b89fedaec60bdbc254f23f66149b31d2f8da\/lib\/http2.c nn&#8220;`cnif(stream-u003ebodystarted) {n \/* This is a trailer *\/n H2BUGF(infof(data_s, &#8221;h2 trailer: %.*s: %.*s&#8221;, namelen, name, valuelen,n value));n result = Curl_dyn_addf(u0026stream-u003etrailer_recvbuf,n &#8221;%.*s:...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=42607\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-12T02:12:36+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: Integer Overflow\\\/Signedness Mismatch in Printf Precision for HTTP\\\/2 Trailer Headers_H1:3665363\",\"datePublished\":\"2026-04-12T02:12:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607\"},\"wordCount\":2126,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-3.3\",\"exploit\",\"hackerone\",\"LOW\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=42607#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607\",\"name\":\"curl: Integer Overflow\\\/Signedness Mismatch in Printf Precision for HTTP\\\/2 Trailer Headers_H1:3665363 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-04-12T02:12:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=42607\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42607#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: Integer Overflow\\\/Signedness Mismatch in Printf Precision for HTTP\\\/2 Trailer Headers_H1:3665363\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=42607","og_locale":"en_US","og_type":"article","og_title":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-04-11T09:50:44&#8243;,&#8221;description&#8221;:&#8221;# BUG IN https:\/\/raw.githubusercontent.com\/curl\/curl\/07a9b89fedaec60bdbc254f23f66149b31d2f8da\/lib\/http2.c nn&#8220;`cnif(stream-u003ebodystarted) {n \/* This is a trailer *\/n H2BUGF(infof(data_s, &#8221;h2 trailer: %.*s: %.*s&#8221;, namelen, name, valuelen,n value));n result = Curl_dyn_addf(u0026stream-u003etrailer_recvbuf,n &#8221;%.*s:...","og_url":"https:\/\/zero.redgem.net\/?p=42607","og_site_name":"zero redgem","article_published_time":"2026-04-12T02:12:36+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=42607#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=42607"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363","datePublished":"2026-04-12T02:12:36+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=42607"},"wordCount":2126,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-3.3","exploit","hackerone","LOW","news","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=42607#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=42607","url":"https:\/\/zero.redgem.net\/?p=42607","name":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-04-12T02:12:36+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=42607#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=42607"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=42607#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: Integer Overflow\/Signedness Mismatch in Printf Precision for HTTP\/2 Trailer Headers_H1:3665363"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/42607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=42607"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/42607\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=42607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=42607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=42607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}