From: Vinicius Costa Gomes <[email protected]>

This patch checks if the codec array included in the "Register" method
contains valid codec ID's.
---
 src/handsfree-audio.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/handsfree-audio.c b/src/handsfree-audio.c
index ee67f05..499e0de 100644
--- a/src/handsfree-audio.c
+++ b/src/handsfree-audio.c
@@ -32,6 +32,12 @@
 
 #define HFP_AUDIO_MANAGER_INTERFACE            OFONO_SERVICE 
".HandsfreeAudioManager"
 
+/* Supported agent codecs */
+enum hfp_codec {
+       HFP_CODEC_CVSD = 0x01,
+       HFP_CODEC_MSBC = 0x02,
+};
+
 struct agent {
        char *owner;
        char *path;
@@ -53,7 +59,7 @@ static DBusMessage *am_agent_register(DBusConnection *conn,
        const char *sender, *path;
        unsigned char *codecs;
        DBusMessageIter iter, array;
-       int length;
+       int length, i;
 
        if (agent)
                return __ofono_error_in_use(msg);
@@ -72,6 +78,12 @@ static DBusMessage *am_agent_register(DBusConnection *conn,
        if (length == 0)
                return __ofono_error_invalid_args(msg);
 
+       for (i = 0; i < length; i++) {
+               if (codecs[i] != HFP_CODEC_CVSD &&
+                               codecs[i] != HFP_CODEC_MSBC)
+                       return __ofono_error_invalid_args(msg);
+       }
+
        agent = g_new0(struct agent, 1);
        agent->owner = g_strdup(sender);
        agent->path = g_strdup(path);
-- 
1.7.11.7

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to