MT#55283 always use full-struct initialisation

Avoids uninitialised values.

Closes #1873

Identified by Alexandru Pirvulescu <alex@tcnbroadcasting.com>

Change-Id: Ie7019c2f762b6f163d6d27c519513f6898e1571c
Ref: https://github.com/sipwise/rtpengine/pull/1873
Thanks: Alexandru Pirvulescu <alex@tcnbroadcasting.com>
(cherry picked from commit 38985b96df)
mr12.5
Richard Fuchs 6 months ago
parent 09a11d4e2b
commit 397b11ee72

@ -83,12 +83,11 @@ bool kernel_init_table(void) {
if (!kernel.is_open) if (!kernel.is_open)
return true; return true;
struct rtpengine_command_init cmd;
ssize_t ret; ssize_t ret;
cmd.cmd = REMG_INIT; struct rtpengine_command_init cmd = {
.cmd = REMG_INIT,
cmd.init = (struct rtpengine_init_info) { .init = {
.last_cmd = __REMG_LAST, .last_cmd = __REMG_LAST,
.msg_size = { .msg_size = {
[REMG_INIT] = sizeof(struct rtpengine_command_init), [REMG_INIT] = sizeof(struct rtpengine_command_init),
@ -108,6 +107,7 @@ bool kernel_init_table(void) {
[REMG_FREE_PACKET_STREAM] = sizeof(struct rtpengine_command_free_packet_stream), [REMG_FREE_PACKET_STREAM] = sizeof(struct rtpengine_command_free_packet_stream),
}, },
.rtpe_stats = rtpe_stats, .rtpe_stats = rtpe_stats,
},
}; };
ret = write(kernel.fd, &cmd, sizeof(cmd)); ret = write(kernel.fd, &cmd, sizeof(cmd));
@ -159,14 +159,15 @@ void kernel_shutdown_table(void) {
void kernel_add_stream(struct rtpengine_target_info *mti) { void kernel_add_stream(struct rtpengine_target_info *mti) {
struct rtpengine_command_add_target cmd;
ssize_t ret; ssize_t ret;
if (!kernel.is_open) if (!kernel.is_open)
return; return;
cmd.cmd = REMG_ADD_TARGET; struct rtpengine_command_add_target cmd = {
cmd.target = *mti; .cmd = REMG_ADD_TARGET,
.target = *mti,
};
ret = write(kernel.fd, &cmd, sizeof(cmd)); ret = write(kernel.fd, &cmd, sizeof(cmd));
if (ret == sizeof(cmd)) if (ret == sizeof(cmd))
@ -176,14 +177,15 @@ void kernel_add_stream(struct rtpengine_target_info *mti) {
} }
void kernel_add_destination(struct rtpengine_destination_info *mdi) { void kernel_add_destination(struct rtpengine_destination_info *mdi) {
struct rtpengine_command_destination cmd;
ssize_t ret; ssize_t ret;
if (!kernel.is_open) if (!kernel.is_open)
return; return;
cmd.cmd = REMG_ADD_DESTINATION; struct rtpengine_command_destination cmd = {
cmd.destination = *mdi; .cmd = REMG_ADD_DESTINATION,
.destination = *mdi,
};
ret = write(kernel.fd, &cmd, sizeof(cmd)); ret = write(kernel.fd, &cmd, sizeof(cmd));
if (ret == sizeof(cmd)) if (ret == sizeof(cmd))
@ -210,13 +212,14 @@ bool kernel_del_stream(struct rtpengine_command_del_target *cmd) {
} }
unsigned int kernel_add_call(const char *id) { unsigned int kernel_add_call(const char *id) {
struct rtpengine_command_add_call cmd;
ssize_t ret; ssize_t ret;
if (!kernel.is_open) if (!kernel.is_open)
return UNINIT_IDX; return UNINIT_IDX;
cmd.cmd = REMG_ADD_CALL; struct rtpengine_command_add_call cmd = {
.cmd = REMG_ADD_CALL,
};
snprintf(cmd.call.call_id, sizeof(cmd.call.call_id), "%s", id); snprintf(cmd.call.call_id, sizeof(cmd.call.call_id), "%s", id);
ret = read(kernel.fd, &cmd, sizeof(cmd)); ret = read(kernel.fd, &cmd, sizeof(cmd));
@ -226,14 +229,15 @@ unsigned int kernel_add_call(const char *id) {
} }
void kernel_del_call(unsigned int idx) { void kernel_del_call(unsigned int idx) {
struct rtpengine_command_del_call cmd;
ssize_t ret; ssize_t ret;
if (!kernel.is_open) if (!kernel.is_open)
return; return;
cmd.cmd = REMG_DEL_CALL; struct rtpengine_command_del_call cmd = {
cmd.call_idx = idx; .cmd = REMG_DEL_CALL,
.call_idx = idx,
};
ret = write(kernel.fd, &cmd, sizeof(cmd)); ret = write(kernel.fd, &cmd, sizeof(cmd));
if (ret == sizeof(cmd)) if (ret == sizeof(cmd))
@ -243,14 +247,15 @@ void kernel_del_call(unsigned int idx) {
} }
unsigned int kernel_add_intercept_stream(unsigned int call_idx, const char *id) { unsigned int kernel_add_intercept_stream(unsigned int call_idx, const char *id) {
struct rtpengine_command_add_stream cmd;
ssize_t ret; ssize_t ret;
if (!kernel.is_open) if (!kernel.is_open)
return UNINIT_IDX; return UNINIT_IDX;
cmd.cmd = REMG_ADD_STREAM; struct rtpengine_command_add_stream cmd = {
cmd.stream.idx.call_idx = call_idx; .cmd = REMG_ADD_STREAM,
.stream.idx.call_idx = call_idx,
};
snprintf(cmd.stream.stream_name, sizeof(cmd.stream.stream_name), "%s", id); snprintf(cmd.stream.stream_name, sizeof(cmd.stream.stream_name), "%s", id);
ret = read(kernel.fd, &cmd, sizeof(cmd)); ret = read(kernel.fd, &cmd, sizeof(cmd));
@ -299,11 +304,13 @@ bool kernel_add_stream_packet(unsigned int idx, const char *buf, size_t len, uns
size_t total_len = len + sizeof(struct rtpengine_command_play_stream_packet); size_t total_len = len + sizeof(struct rtpengine_command_play_stream_packet);
struct rtpengine_command_play_stream_packet *cmd = alloca(total_len); struct rtpengine_command_play_stream_packet *cmd = alloca(total_len);
cmd->cmd = REMG_PLAY_STREAM_PACKET; *cmd = (__typeof__(*cmd)) {
cmd->play_stream_packet.packet_stream_idx = idx; .cmd = REMG_PLAY_STREAM_PACKET,
cmd->play_stream_packet.delay_ms = delay_ms; .play_stream_packet.packet_stream_idx = idx,
cmd->play_stream_packet.delay_ts = ts; .play_stream_packet.delay_ms = delay_ms,
cmd->play_stream_packet.duration_ts = dur; .play_stream_packet.delay_ts = ts,
.play_stream_packet.duration_ts = dur,
};
memcpy(&cmd->play_stream_packet.data, buf, len); memcpy(&cmd->play_stream_packet.data, buf, len);

@ -1798,7 +1798,7 @@ void __unkernelize(struct packet_stream *p, const char *reason) {
ilog(LOG_INFO, "Removing media stream from kernel: local %s (%s)", ilog(LOG_INFO, "Removing media stream from kernel: local %s (%s)",
endpoint_print_buf(&p->selected_sfd->socket.local), endpoint_print_buf(&p->selected_sfd->socket.local),
reason); reason);
struct rtpengine_command_del_target cmd; struct rtpengine_command_del_target cmd = {0};
__re_address_translate_ep(&cmd.local, &p->selected_sfd->socket.local); __re_address_translate_ep(&cmd.local, &p->selected_sfd->socket.local);
kernel_del_stream(&cmd); kernel_del_stream(&cmd);
} }

Loading…
Cancel
Save