diff options
Diffstat (limited to 'protocols/Steam/src/protobuf-c')
-rw-r--r-- | protocols/Steam/src/protobuf-c/protobuf-c-text.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/protocols/Steam/src/protobuf-c/protobuf-c-text.cpp b/protocols/Steam/src/protobuf-c/protobuf-c-text.cpp index c0438b6ac8..68e54f143e 100644 --- a/protocols/Steam/src/protobuf-c/protobuf-c-text.cpp +++ b/protocols/Steam/src/protobuf-c/protobuf-c-text.cpp @@ -330,18 +330,22 @@ static void protobuf_c_text_to_string_internal( if (f[i].label == PROTOBUF_C_LABEL_REPEATED) { for (j = 0; j < quantifier_offset; j++) { auto *member = STRUCT_MEMBER(ProtobufCBinaryData *, m, f[i].offset); - char *p = (char *)malloc(member->len * 2 + 1); - bin2hex(member->data, member->len, p); - str.AppendFormat("%*s%s: \"%s\"\n", level, "", f[i].name, p); - free(p); + if (member->len && member->data) { + char *p = (char *)malloc(member->len * 2 + 1); + bin2hex(member->data, member->len, p); + str.AppendFormat("%*s%s: \"%s\"\n", level, "", f[i].name, p); + free(p); + } } } else { auto member = STRUCT_MEMBER(ProtobufCBinaryData, m, f[i].offset); - char *p = (char *)malloc(member.len * 2 + 1); - bin2hex(member.data, member.len, p); - str.AppendFormat("%*s%s: \"%s\"\n", level, "", f[i].name, p); - free(p); + if (member.len && member.data) { + char *p = (char *)malloc(member.len * 2 + 1); + bin2hex(member.data, member.len, p); + str.AppendFormat("%*s%s: \"%s\"\n", level, "", f[i].name, p); + free(p); + } } break; |