You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
synce4l/SOURCES/synce4l-ccwarns.patch

91 lines
3.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

commit b8089eabc28d665cba462c29aabdb159f0f153a6
Author: Miroslav Lichvar <mlichvar@redhat.com>
Date: Tue May 28 13:38:13 2024 +0200
Fix more compiler warnings
Fix the following warnings observed when -O2 and -D_FORTIFY_SOURCE=2 are
added to CFLAGS.
synce_dev.c: In function rebuild_inputs_prio:
synce_dev.c:610:28: warning: best_c_idx may be used uninitialized [-Wmaybe-uninitialized]
610 | all[best_c_idx] = NULL;
| ^
synce_dev.c:582:39: note: best_c_idx was declared here
582 | int i = 0, prio_count = 0, j, best_c_idx, ret;
| ^~~~~~~~~~
synce_manager.c: In function synce_manager_server_thread:
synce_manager.c:260:9: warning: strncpy specified bound 108 equals destination size [-Wstringop-truncation]
260 | strncpy(server.sun_path, synce_clock_get_socket_path(clk),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
261 | sizeof(server.sun_path));
| ~~~~~~~~~~~~~~~~~~~~~~~~
synce_manager.c:343:20: warning: ret may be used uninitialized [-Wmaybe-uninitialized]
343 | if (!ret)
| ^
synce_manager.c:241:26: note: ret was declared here
241 | int tlv_num = 0, ret, i, resp_len, bytes_read;
| ^~~
synce_manager.c: In function synce_manager_server_thread:
synce_manager.c:346:25: warning: ignoring return value of write declared with attribute warn_unused_result [-Wunused-result]
346 | write(new_socket, response, resp_len);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
diff --git a/synce_dev.c b/synce_dev.c
index fc784ed..5e2bbb9 100644
--- a/synce_dev.c
+++ b/synce_dev.c
@@ -579,7 +579,7 @@ static bool source_invalid(struct synce_clock_source *c)
int rebuild_inputs_prio(struct synce_dev *dev)
{
struct synce_clock_source *c, *best_c, **all, **prioritized;
- int i = 0, prio_count = 0, j, best_c_idx, ret;
+ int i = 0, prio_count = 0, j, best_c_idx = 0, ret;
uint32_t prio;
all = calloc(dev->num_clock_sources, sizeof(*all));
diff --git a/synce_manager.c b/synce_manager.c
index b9ba08d..598ef7e 100644
--- a/synce_manager.c
+++ b/synce_manager.c
@@ -257,8 +257,8 @@ static void *synce_manager_server_thread(void *arg)
}
server.sun_family = AF_UNIX;
- strncpy(server.sun_path, synce_clock_get_socket_path(clk),
- sizeof(server.sun_path));
+ snprintf(server.sun_path, sizeof(server.sun_path), "%s",
+ synce_clock_get_socket_path(clk));
if (bind(server_fd, (struct sockaddr *)&server, sizeof(server)) < 0) {
pr_err("%s Bind failed", __func__);
@@ -289,10 +289,12 @@ static void *synce_manager_server_thread(void *arg)
bytes_read = recv(new_socket, command, MAX_COMMAND_SIZE, 0);
if (bytes_read <= 0) {
synce_manager_generate_err_tlv(&err_tlv, "NULL command");
+ ret = -1;
goto return_response;
} else if (bytes_read > MAX_COMMAND_SIZE) {
synce_manager_generate_err_tlv(&err_tlv,
"Command size exceeds MAX_COMMAND_SIZE");
+ ret = -1;
goto return_response;
}
ret = synce_manager_parse_input(command, bytes_read, &tlv_array,
@@ -340,8 +342,8 @@ return_response:
if (tlv_array)
free((void *)tlv_array);
- if (!ret)
- write(new_socket, response, resp_len);
+ if (!ret && write(new_socket, response, resp_len) != resp_len)
+ ret = -1;
close(new_socket);
}