Skip to content

fix(http): check curl_slist_append (silent header loss + leak on OOM)#18

Merged
Reddimus merged 3 commits into
mainfrom
fix/curl-slist-append-checked
Jun 7, 2026
Merged

fix(http): check curl_slist_append (silent header loss + leak on OOM)#18
Reddimus merged 3 commits into
mainfrom
fix/curl-slist-append-checked

Conversation

@Reddimus

@Reddimus Reddimus commented Jun 7, 2026

Copy link
Copy Markdown
Owner

From the SDK correctness audit. curl_slist_append returns null on alloc failure without freeing the list; the old code reassigned the result, leaking prior nodes + dropping headers. Now checked: free + network error on failure. 174/174 tests pass, lint clean.

Reddimus added 3 commits June 7, 2026 00:52
The README's FetchContent example pinned a superseded tag; consumers
copy-pasting it pulled an older release than the current one. Point it
at the latest tag (matches project VERSION in CMakeLists).
daily_requests_remaining() returned 0 when daily_limit<=0 ('no cap'), but
CDOClient::do_get() rejects with quota_exceeded when remaining<=0 — so
disabling the daily cap blocked EVERY request, contradicting the documented
'0 = no limit' semantics. Return INT32_MAX when disabled. Regression test in
NoDailyLimitWhenZero.
…on OOM)

curl_slist_append returns nullptr on allocation failure WITHOUT freeing the
existing list; assigning the result straight back to `headers` leaked the
prior nodes and silently dropped headers. Capture, check, free + return a
network error on failure.
@Reddimus Reddimus merged commit baf1087 into main Jun 7, 2026
4 checks passed
@Reddimus Reddimus deleted the fix/curl-slist-append-checked branch June 7, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant