]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-mpc83xx
authorWolfgang Denk <wd@denx.de>
Wed, 30 Sep 2009 21:22:46 +0000 (23:22 +0200)
committerWolfgang Denk <wd@denx.de>
Wed, 30 Sep 2009 21:22:46 +0000 (23:22 +0200)
common/cmd_fdt.c

index 86837723b55dab1be00f6aa8305f78bef882fa71..919a0bf6e780c8d609e3145a01dd161626be4521 100644 (file)
@@ -574,14 +574,18 @@ static int fdt_parse_prop(char **newval, int count, char *data, int *len)
                 * Byte stream.  Convert the values.
                 */
                newp++;
-               while ((*newp != ']') && (stridx < count)) {
-                       tmp = simple_strtoul(newp, &newp, 16);
-                       *data++ = tmp & 0xFF;
-                       *len    = *len + 1;
+               while ((stridx < count) && (*newp != ']')) {
                        while (*newp == ' ')
                                newp++;
-                       if (*newp != '\0')
+                       if (*newp == '\0') {
                                newp = newval[++stridx];
+                               continue;
+                       }
+                       if (!isxdigit(*newp))
+                               break;
+                       tmp = simple_strtoul(newp, &newp, 16);
+                       *data++ = tmp & 0xFF;
+                       *len    = *len + 1;
                }
                if (*newp != ']') {
                        printf("Unexpected character '%c'\n", *newp);
@@ -589,12 +593,15 @@ static int fdt_parse_prop(char **newval, int count, char *data, int *len)
                }
        } else {
                /*
-                * Assume it is a string.  Copy it into our data area for
-                * convenience (including the terminating '\0').
+                * Assume it is one or more strings.  Copy it into our
+                * data area for convenience (including the
+                * terminating '\0's).
                 */
                while (stridx < count) {
-                       *len = strlen(newp) + 1;
+                       size_t length = strlen(newp) + 1;
                        strcpy(data, newp);
+                       data += length;
+                       *len += length;
                        newp = newval[++stridx];
                }
        }