Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/develop 6b802d653 -> c10e883c9


oicmgr; fix uri parameter parsing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/c10e883c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/c10e883c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/c10e883c

Branch: refs/heads/develop
Commit: c10e883c9cf726bc0f70fabdc8e589668ea524a2
Parents: ba51dfd
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Wed Oct 5 14:51:48 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Wed Oct 5 14:53:03 2016 -0700

----------------------------------------------------------------------
 mgmt/oicmgr/src/newtmgr.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c10e883c/mgmt/oicmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/mgmt/oicmgr/src/newtmgr.c b/mgmt/oicmgr/src/newtmgr.c
index 39d6cf8..0f426ac 100644
--- a/mgmt/oicmgr/src/newtmgr.c
+++ b/mgmt/oicmgr/src/newtmgr.c
@@ -36,7 +36,7 @@
 #define OICMGR_STACK_SZ        OS_STACK_ALIGN(MYNEWT_VAL(OICMGR_STACK_SIZE))
 
 struct omgr_jbuf {
-    struct mgmt_jbuf ob_m;
+    struct mgmt_jbuf ob_mj;
     char *ob_in;
     uint16_t ob_in_off;
     uint16_t ob_in_end;
@@ -127,7 +127,7 @@ omgr_jbuf_write(void *arg, char *data, int len)
     njb = (struct omgr_jbuf *)arg;
 
     if (njb->ob_out_off + len >= njb->ob_out_end) {
-        assert(0);
+        rc = -1;
         goto err;
     }
     memcpy(njb->ob_out + njb->ob_out_off, data, len);
@@ -146,7 +146,7 @@ omgr_jbuf_init(struct omgr_jbuf *ob)
 
     memset(ob, 0, sizeof(*ob));
 
-    mjb = &ob->ob_m;
+    mjb = &ob->ob_mj;
     mjb->mjb_buf.jb_read_next = omgr_jbuf_read_next;
     mjb->mjb_buf.jb_read_prev = omgr_jbuf_read_prev;
     mjb->mjb_buf.jb_readn = omgr_jbuf_readn;
@@ -169,12 +169,13 @@ omgr_jbuf_setobuf(struct omgr_jbuf *ob, char *ptr, 
uint16_t maxlen)
     ob->ob_out_off = 0;
     ob->ob_out_end = maxlen;
     ob->ob_out[0] = '\0';
-    ob->ob_m.mjb_enc.je_wr_commas = 0;
+    ob->ob_mj.mjb_enc.je_wr_commas = 0;
 }
 
 static struct mgmt_handler *
 omgr_oic_find_handler(const char *q, int qlen)
 {
+    char id_str[8];
     int grp = -1;
     int id = -1;
     char *str;
@@ -182,16 +183,20 @@ omgr_oic_find_handler(const char *q, int qlen)
     int slen;
 
     slen = oc_ri_get_query_value(q, qlen, "gr", &str);
-    if (slen > 0) {
-        grp = strtoul(str, &eptr, 0);
-        if (*eptr != '\0' && *eptr != '&') {
+    if (slen > 0 && slen < sizeof(id_str) - 1) {
+        memcpy(id_str, str, slen);
+        id_str[slen] = '\0';
+        grp = strtoul(id_str, &eptr, 0);
+        if (*eptr != '\0') {
             return NULL;
         }
     }
     slen = oc_ri_get_query_value(q, qlen, "id", &str);
-    if (slen > 0) {
-        id = strtoul(str, &eptr, 0);
-        if (*eptr != '\0' && *eptr != '&') {
+    if (slen > 0 && slen < sizeof(id_str) - 1) {
+        memcpy(id_str, str, slen);
+        id_str[slen] = '\0';
+        id = strtoul(id_str, &eptr, 0);
+        if (*eptr != '\0') {
             return NULL;
         }
     }
@@ -233,13 +238,13 @@ omgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, 
int isset)
 
     if (!isset) {
         if (handler->mh_read) {
-            rc = handler->mh_read(&o->os_jbuf.ob_m);
+            rc = handler->mh_read(&o->os_jbuf.ob_mj);
         } else {
             goto bad_req;
         }
     } else {
         if (handler->mh_write) {
-            rc = handler->mh_write(&o->os_jbuf.ob_m);
+            rc = handler->mh_write(&o->os_jbuf.ob_mj);
         } else {
             goto bad_req;
         }

Reply via email to