From a91257864b78e688af9c412fc82e81ab714f3ec8 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 27 Feb 2023 18:22:17 +0100 Subject: Fix transmission session setup after transmission update --- src/transmission.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/transmission.c b/src/transmission.c index 916ccc7..241b0b1 100644 --- a/src/transmission.c +++ b/src/transmission.c @@ -15,7 +15,7 @@ int transmission_connect(TransmissionSession *session) { Buffer buffer; buffer_init(&buffer); - const char *args[] = { "curl", "-s", "-I", "http://127.0.0.1:9091/transmission/rpc", NULL }; + const char *args[] = { "curl", "-s", "http://127.0.0.1:9091/transmission/rpc", NULL }; result = program_exec(args, program_buffer_write_callback, &buffer); if(result != 0) { fprintf(stderr, "Failed to retrieve transmission session id\n"); @@ -29,13 +29,20 @@ int transmission_connect(TransmissionSession *session) { goto cleanup; } - char *session_id_end = strchr(session_id_start + 27, '\r'); + char *session_id_end = strchr(session_id_start + 27, '<'); if(!session_id_end) { fprintf(stderr, "Failed to find session id in transmission response\n"); result = -1; goto cleanup; } + const size_t session_id_len = session_id_end - session_id_start; + if(session_id_len + 1 > sizeof(session->session_header)) { + fprintf(stderr, "Session id is too long\n"); + result = -1; + goto cleanup; + } + memcpy(session->session_header, session_id_start, session_id_end - session_id_start); session->session_header[session_id_end - session_id_start] = '\0'; -- cgit v1.2.3