diff --git a/src/kits/app/MessageAdapter.cpp b/src/kits/app/MessageAdapter.cpp index 21136c0028..bce5957933 100644 --- a/src/kits/app/MessageAdapter.cpp +++ b/src/kits/app/MessageAdapter.cpp @@ -679,15 +679,18 @@ MessageAdapter::_UnflattenDanoMessage(uint32 format, BMessage *into, ssize_t fieldSize = sectionHeader.size - sizeof(dano_section_header); uint8 *fieldBuffer = NULL; - if (fieldSize > 0) { + if (fieldSize <= 0) { // there may be no data. we shouldn't fail because of that - fieldBuffer = (uint8 *)malloc(fieldSize); - if (fieldBuffer == NULL) - throw (status_t)B_NO_MEMORY; - - reader(fieldBuffer, fieldSize); + offset += sectionHeader.size; + continue; } + fieldBuffer = (uint8 *)malloc(fieldSize); + if (fieldBuffer == NULL) + throw (status_t)B_NO_MEMORY; + + reader(fieldBuffer, fieldSize); + switch (sectionHeader.code) { case SECTION_OFFSET_TABLE: case SECTION_TARGET_INFORMATION: