aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2023-02-27 18:22:17 +0100
committerdec05eba <dec05eba@protonmail.com>2023-02-27 18:22:17 +0100
commita91257864b78e688af9c412fc82e81ab714f3ec8 (patch)
treece60752a441f45c44950654aec456bbcf71b7584
parent4cc8e0340240bafb06bbfa43edebb6c945c58073 (diff)
Fix transmission session setup after transmission update
-rw-r--r--src/transmission.c11
1 files 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';