alsa/0003-seq-Fix-for-snd_seq_parse_address.patch

36 lines
1.2 KiB
Diff

From 19892334499ed21ed4dc30084ad8700253f9cb2f Mon Sep 17 00:00:00 2001
From: Pedro Lopez-Cabanillas <pedro.lopez.cabanillas@gmail.com>
Date: Thu, 22 Apr 2010 15:42:20 +0200
Subject: [PATCH 03/21] seq: Fix for snd_seq_parse_address()
snd_seq_parse_address() uses strncmp() to compare the client name
in the string argument with the existing clients, until it finds one
name matching the same leading characters. This may produce wrong
results when there are two sequencer clients with similar names.
Example: "KMidimon" : "Kmid"
Signed-off-by: Pedro Lopez-Cabanillas <pedro.lopez.cabanillas@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
src/seq/seqmid.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/seq/seqmid.c b/src/seq/seqmid.c
index 86a4970..894c3a2 100644
--- a/src/seq/seqmid.c
+++ b/src/seq/seqmid.c
@@ -414,7 +414,8 @@ int snd_seq_parse_address(snd_seq_t *seq, snd_seq_addr_t *addr, const char *arg)
return -EINVAL;
cinfo.client = -1;
while (snd_seq_query_next_client(seq, &cinfo) >= 0) {
- if (! strncmp(arg, cinfo.name, len)) {
+ if ((strlen(cinfo.name) == len) &&
+ ! strncmp(arg, cinfo.name, len)) {
addr->client = cinfo.client;
return 0;
}
--
1.7.2.1