Resolve remaining compilation warnings in wssshc.c by fixing printf format...

Resolve remaining compilation warnings in wssshc.c by fixing printf format specifier and type casts for size_t
parent b5502db7
......@@ -34,6 +34,8 @@
#define BUFFER_SIZE 4096
#define DEFAULT_PORT 9898
int send_all(SSL *ssl, const char *data, int len);
int global_debug = 0;
pthread_mutex_t tunnel_mutex;
......@@ -250,16 +252,18 @@ void *tunnel_thread(void *arg) {
printf("[DEBUG] Sending tunnel_response, hex len: %zu, hex: %.100s...\n", strlen(hex_data), hex_data);
}
size_t response_size = strlen("{\"type\":\"tunnel_response\",\"request_id\":\"\",\"data\":\"\"}") + strlen(request_id) + strlen(hex_data) + 1;
size_t response_size = 48 + strlen(request_id) + strlen(hex_data) + 1;
char *response = malloc(response_size);
if (!response) {
perror("Memory allocation failed for response");
free(hex_data);
break;
}
snprintf(response, response_size,
"{\"type\":\"tunnel_response\",\"request_id\":\"%s\",\"data\":\"%s\"}",
request_id, hex_data);
strcpy(response, "{\"type\":\"tunnel_response\",\"request_id\":\"");
strcat(response, request_id);
strcat(response, "\",\"data\":\"");
strcat(response, hex_data);
strcat(response, "\"}");
if (global_debug) {
printf("[DEBUG] Sending tunnel_response, len: %zu\n", strlen(response));
......@@ -625,7 +629,7 @@ void connect_to_server(const wssshc_config_t *config) {
int masked = buffer[1] & 0x80;
int len_indicator = buffer[1] & 0x7F;
int header_len = 2;
int payload_len;
size_t payload_len;
if (config->debug) {
printf("[DEBUG] Initial len_indicator = %d, masked = %d\n", len_indicator, masked);
......@@ -664,12 +668,12 @@ void connect_to_server(const wssshc_config_t *config) {
header_len += 4;
}
if (bytes_read >= payload_len + header_len) {
if ((size_t)bytes_read >= (size_t)header_len + payload_len) {
char *payload = buffer + header_len;
if (masked) {
// Unmask the payload
char *mask_key = buffer + header_len - 4;
for (int i = 0; i < payload_len; i++) {
for (size_t i = 0; i < payload_len; i++) {
payload[i] ^= mask_key[i % 4];
}
}
......@@ -677,7 +681,7 @@ void connect_to_server(const wssshc_config_t *config) {
memmove(buffer, payload, payload_len);
buffer[payload_len] = '\0';
} else {
fprintf(stderr, "WebSocket frame incomplete: need %d bytes, got %d\n", payload_len + header_len, bytes_read);
fprintf(stderr, "WebSocket frame incomplete: need %zu bytes, got %d\n", payload_len + header_len, bytes_read);
SSL_free(ssl);
SSL_CTX_free(ssl_ctx);
close(sock);
......@@ -719,7 +723,7 @@ void connect_to_server(const wssshc_config_t *config) {
int masked = buffer[1] & 0x80;
int len_indicator = buffer[1] & 0x7F;
int header_len = 2;
int payload_len;
size_t payload_len;
if (len_indicator <= 125) {
payload_len = len_indicator;
......@@ -741,11 +745,11 @@ void connect_to_server(const wssshc_config_t *config) {
header_len += 4;
}
if (payload_len >= 0 && (size_t)payload_len <= sizeof(buffer) - header_len && bytes_read >= payload_len + header_len) {
if (payload_len <= sizeof(buffer) - header_len && (size_t)bytes_read >= (size_t)header_len + payload_len) {
char *payload = buffer + header_len;
if (masked) {
char *mask_key = buffer + header_len - 4;
for (int i = 0; i < payload_len; i++) {
for (size_t i = 0; i < payload_len; i++) {
payload[i] ^= mask_key[i % 4];
}
}
......@@ -826,7 +830,7 @@ void connect_to_server(const wssshc_config_t *config) {
}
} else {
if (config->debug) {
printf("[DEBUG] Incomplete frame: need %d bytes, got %d\n", payload_len + header_len, bytes_read);
printf("[DEBUG] Incomplete frame: need %zu bytes, got %d\n", (size_t)(payload_len + header_len), bytes_read);
}
}
} else if (bytes_read >= 2 && (buffer[0] & 0x8F) == 0x88) { // Close frame
......@@ -868,27 +872,29 @@ void connect_to_server(const wssshc_config_t *config) {
header_len += 4;
}
if (payload_len <= 1024 && bytes_read >= header_len + payload_len) {
if (payload_len <= 1024 && (size_t)bytes_read >= (size_t)header_len + payload_len) {
char *payload = buffer + header_len;
if (masked) {
char *mask_key = buffer + header_len - 4;
for (int i = 0; i < payload_len; i++) {
for (size_t i = 0; i < payload_len; i++) {
payload[i] ^= mask_key[i % 4];
}
}
// Send pong frame with same payload, properly masked
char pong_frame[10 + payload_len]; // Max header + payload
char pong_frame[14 + 1024]; // Max header + max pong payload
pong_frame[0] = 0x8A; // Pong opcode
int pong_header_len = 2;
char pong_mask_key[4];
if (payload_len <= 125) {
pong_frame[1] = 0x80 | payload_len; // MASK + length
} else if (payload_len <= 65535) {
size_t pong_payload_len = payload_len > 1024 ? 1024 : payload_len;
if (pong_payload_len <= 125) {
pong_frame[1] = 0x80 | (int)pong_payload_len; // MASK + length
} else if (pong_payload_len <= 65535) {
pong_frame[1] = 0x80 | 126; // MASK + extended length
pong_frame[2] = (payload_len >> 8) & 0xFF;
pong_frame[3] = payload_len & 0xFF;
pong_frame[2] = (pong_payload_len >> 8) & 0xFF;
pong_frame[3] = pong_payload_len & 0xFF;
pong_header_len = 4;
} else {
pong_frame[1] = 0x80 | 127; // MASK + extended length
......@@ -896,10 +902,10 @@ void connect_to_server(const wssshc_config_t *config) {
pong_frame[3] = 0;
pong_frame[4] = 0;
pong_frame[5] = 0;
pong_frame[6] = (payload_len >> 24) & 0xFF;
pong_frame[7] = (payload_len >> 16) & 0xFF;
pong_frame[8] = (payload_len >> 8) & 0xFF;
pong_frame[9] = payload_len & 0xFF;
pong_frame[6] = (pong_payload_len >> 24) & 0xFF;
pong_frame[7] = (pong_payload_len >> 16) & 0xFF;
pong_frame[8] = (pong_payload_len >> 8) & 0xFF;
pong_frame[9] = pong_payload_len & 0xFF;
pong_header_len = 10;
}
......@@ -911,11 +917,11 @@ void connect_to_server(const wssshc_config_t *config) {
pong_header_len += 4;
// Mask payload
for (int i = 0; i < payload_len; i++) {
for (size_t i = 0; i < pong_payload_len; i++) {
pong_frame[pong_header_len + i] = payload[i] ^ pong_mask_key[i % 4];
}
int pong_frame_len = pong_header_len + payload_len;
int pong_frame_len = pong_header_len + (int)pong_payload_len;
if (config->debug) {
printf("[DEBUG] Sending pong frame, len: %d\n", pong_frame_len);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment