From 8144d142e40b7ff185f33bf6a0d974958e873f8b Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 12 Jan 2015 14:33:56 +0100 Subject: player: don't set tag strings to NULL bstr is a bounded string type, consisting of a pointer and a length value. If the length is 0, the pointer can be NULL. This is somewhat logical due to how this abstraction works, but it can leak when converting to C strings. talloc_strndup() returns NULL instead of "" in this case, which broke some other code. Use bstrto0() instead, which is the "proper" function to convert bstr to char*. Fixes #1462. --- common/tags.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'common/tags.c') diff --git a/common/tags.c b/common/tags.c index 04dabd8cdf..35543444f1 100644 --- a/common/tags.c +++ b/common/tags.c @@ -32,15 +32,15 @@ void mp_tags_set_bstr(struct mp_tags *tags, bstr key, bstr value) for (int n = 0; n < tags->num_keys; n++) { if (bstrcasecmp0(key, tags->keys[n]) == 0) { talloc_free(tags->values[n]); - tags->values[n] = talloc_strndup(tags, value.start, value.len); + tags->values[n] = bstrto0(tags, value); return; } } MP_RESIZE_ARRAY(tags, tags->keys, tags->num_keys + 1); MP_RESIZE_ARRAY(tags, tags->values, tags->num_keys + 1); - tags->keys[tags->num_keys] = talloc_strndup(tags, key.start, key.len); - tags->values[tags->num_keys] = talloc_strndup(tags, value.start, value.len); + tags->keys[tags->num_keys] = bstrto0(tags, key); + tags->values[tags->num_keys] = bstrto0(tags, value); tags->num_keys++; } -- cgit v1.2.3