protocol-pulse: fix two -Wformat-nonliteral warnings

For the stream group, we break into the three components we write out
and print those.

For the IPv6 address printing inside [], we can make this a condition on
the printf statement.
This commit is contained in:
Peter Hutterer 2021-09-06 15:37:19 +10:00
parent e55a5441b8
commit 8bb0e340c7
2 changed files with 14 additions and 11 deletions

View file

@ -515,7 +515,7 @@ static void write_cvolume(struct message *m, struct volume *vol)
static void add_stream_group(struct message *m, struct spa_dict *dict, const char *key, static void add_stream_group(struct message *m, struct spa_dict *dict, const char *key,
const char *media_class, const char *media_role) const char *media_class, const char *media_role)
{ {
const char *str, *fmt, *prefix; const char *str, *id, *prefix;
char *b; char *b;
int l; int l;
@ -529,20 +529,20 @@ static void add_stream_group(struct message *m, struct spa_dict *dict, const cha
return; return;
if ((str = media_role) != NULL) if ((str = media_role) != NULL)
fmt = "%s-by-media-role:%s"; id = "media-role";
else if ((str = spa_dict_lookup(dict, PW_KEY_APP_ID)) != NULL) else if ((str = spa_dict_lookup(dict, PW_KEY_APP_ID)) != NULL)
fmt = "%s-by-application-id:%s"; id = "application-id";
else if ((str = spa_dict_lookup(dict, PW_KEY_APP_NAME)) != NULL) else if ((str = spa_dict_lookup(dict, PW_KEY_APP_NAME)) != NULL)
fmt = "%s-by-application-name:%s"; id = "application-name";
else if ((str = spa_dict_lookup(dict, PW_KEY_MEDIA_NAME)) != NULL) else if ((str = spa_dict_lookup(dict, PW_KEY_MEDIA_NAME)) != NULL)
fmt = "%s-by-media-name:%s"; id = "media-name";
else else
return; return;
write_string(m, key); write_string(m, key);
l = strlen(fmt) + strlen(prefix) + strlen(str) - 3; l = strlen(prefix) + strlen(id) + strlen(str) + 6; /* "-by-" , ":" and \0 */
b = alloca(l); b = alloca(l);
snprintf(b, l, fmt, prefix, str); snprintf(b, l, "%s-by-%s:%s", prefix, id, str);
write_u32(m, l); write_u32(m, l);
write_arbitrary(m, b, l); write_arbitrary(m, b, l);
} }

View file

@ -712,17 +712,16 @@ static int format_ip_address(const struct sockaddr_storage *addr, char *buffer,
{ {
char ip[INET6_ADDRSTRLEN]; char ip[INET6_ADDRSTRLEN];
const void *src; const void *src;
const char *fmt; bool is_ipv6 = false;
int port; int port;
switch (addr->ss_family) { switch (addr->ss_family) {
case AF_INET: case AF_INET:
fmt = "%s:%d";
src = &((struct sockaddr_in *) addr)->sin_addr.s_addr; src = &((struct sockaddr_in *) addr)->sin_addr.s_addr;
port = ntohs(((struct sockaddr_in *) addr)->sin_port); port = ntohs(((struct sockaddr_in *) addr)->sin_port);
break; break;
case AF_INET6: case AF_INET6:
fmt = "[%s]:%d"; is_ipv6 = true;
src = &((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr; src = &((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr;
port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port); port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port);
break; break;
@ -733,7 +732,11 @@ static int format_ip_address(const struct sockaddr_storage *addr, char *buffer,
if (inet_ntop(addr->ss_family, src, ip, sizeof(ip)) == NULL) if (inet_ntop(addr->ss_family, src, ip, sizeof(ip)) == NULL)
return -errno; return -errno;
return snprintf(buffer, buflen, fmt, ip, port); return snprintf(buffer, buflen, "%s%s%s:%d",
is_ipv6 ? "[" : "",
ip,
is_ipv6 ? "]" : "",
port);
} }
static int get_ip_address_length(const struct sockaddr_storage *addr) static int get_ip_address_length(const struct sockaddr_storage *addr)