VirtualBox

Ignore:
Timestamp:
Jun 15, 2016 2:26:43 PM (9 years ago)
Author:
vboxsync
Message:

Runtime/RTJson: Fixes, updates to the testcase

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/json.cpp

    r61716 r61721  
    877877
    878878        /* Skip value separator and continue with next token. */
    879         if (rtJsonTokenizerConsumeIfMatched(pTokenizer, RTJSONTOKENCLASS_VALUE_SEPARATOR))
    880             rc = rtJsonTokenizerGetToken(pTokenizer, &pToken);
    881         else
     879        bool fSkippedSep = rtJsonTokenizerConsumeIfMatched(pTokenizer, RTJSONTOKENCLASS_VALUE_SEPARATOR);
     880        rc = rtJsonTokenizerGetToken(pTokenizer, &pToken);
     881
     882        if (   RT_SUCCESS(rc)
     883            && !fSkippedSep
     884            && pToken->enmClass != RTJSONTOKENCLASS_END_ARRAY)
    882885            rc = VERR_JSON_MALFORMED;
    883886    }
     
    947950                        break;
    948951                    }
     952
     953                    papValues = papValuesNew;
     954                    papszNames = papszNamesNew;
    949955                }
    950956
    951                 Assert(cMembers < cMembers);
     957                Assert(cMembers < cMembersMax);
    952958                papszNames[cMembers] = pszName;
    953959                papValues[cMembers] = pVal;
    954960                cMembers++;
    955961
    956                 /* Next token. */
     962                /* Skip value separator and continue with next token. */
     963                bool fSkippedSep = rtJsonTokenizerConsumeIfMatched(pTokenizer, RTJSONTOKENCLASS_VALUE_SEPARATOR);
    957964                rc = rtJsonTokenizerGetToken(pTokenizer, &pToken);
     965
     966                if (   RT_SUCCESS(rc)
     967                    && !fSkippedSep
     968                    && pToken->enmClass != RTJSONTOKENCLASS_END_OBJECT)
     969                    rc = VERR_JSON_MALFORMED;
    958970            }
    959971        }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette