summaryrefslogtreecommitdiff
path: root/protocols/Steam/src/protobuf-c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Steam/src/protobuf-c')
-rw-r--r--protocols/Steam/src/protobuf-c/protobuf-c-text.cpp20
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;