mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-18 20:49:28 +00:00
Tasks 3.3 and 4.1. - vfc curl and openssl-cve-2021-3449 excerpts re-harvested through the shared library: whole functions with upstream_start headers, the vendored key redacted code-safely, no truncated bodies. - vfc/recipes.toml carries mode, fix_path and function anchors; training/manifest.jsonl regenerated. - Juliet CWE-121 strcpy pair gets its buffer declarations back so the vulnerable side is a real overflow again. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01T7XD7x5KonMdmGRkp63EQG
47 lines
1.6 KiB
C
47 lines
1.6 KiB
C
/* Provenance: curl/curl mev_forget_socket (fixed).
|
|
* repo: curl/curl
|
|
* commit: e9a2b0dc72dd3a9aa3a5210e89079a3b719475dc
|
|
* parent: f746780a1e548b4b93790b58d70c3b22fde5360d
|
|
* commit_url: https://github.com/curl/curl/commit/e9a2b0dc72dd3a9aa3a5210e89079a3b719475dc
|
|
* cve: CVE-2026-9080
|
|
* license: curl
|
|
* function: mev_forget_socket
|
|
* relpath: lib/multi_ev.c
|
|
* provenance: human
|
|
* mechanism: other
|
|
*/
|
|
|
|
static CURLMcode mev_forget_socket(struct Curl_multi *multi,
|
|
struct Curl_easy *data,
|
|
curl_socket_t s,
|
|
const char *cause)
|
|
{
|
|
struct mev_sh_entry *entry = mev_sh_entry_get(&multi->ev.sh_entries, s);
|
|
int rc = 0;
|
|
|
|
if(!entry) /* we never knew or already forgot about this socket */
|
|
return CURLM_OK;
|
|
|
|
/* We managed this socket before, tell the socket callback to forget it. */
|
|
if(entry->announced && multi->socket_cb) {
|
|
NOVERBOSE((void)cause);
|
|
CURL_TRC_M(data, "ev %s, call(fd=%" FMT_SOCKET_T ", ev=REMOVE)", cause, s);
|
|
mev_in_callback(multi, TRUE);
|
|
rc = multi->socket_cb(data, s, CURL_POLL_REMOVE,
|
|
multi->socket_userp, entry->user_data);
|
|
mev_in_callback(multi, FALSE);
|
|
/* curl_easy_pause() is documented as callable from any callback; it
|
|
* re-enters mev_assess() which may free this 'entry'. Re-fetch. */
|
|
entry = mev_sh_entry_get(&multi->ev.sh_entries, s);
|
|
if(entry)
|
|
entry->announced = FALSE;
|
|
}
|
|
|
|
mev_sh_entry_kill(multi, s);
|
|
if(rc == -1) {
|
|
multi->dead = TRUE;
|
|
return CURLM_ABORTED_BY_CALLBACK;
|
|
}
|
|
return CURLM_OK;
|
|
}
|