diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2018-04-12 23:59:03 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2018-04-13 04:19:16 +0900 |
commit | 9d6ac24a9c09d90a16435faee97192da21fc7f87 (patch) | |
tree | 9e033753db7721d7e9ee6007ae010e2ed4a6750b | |
parent | 59f3dbdd3484f26028deb1496333f133253197b7 (diff) | |
download | efl-9d6ac24a9c09d90a16435faee97192da21fc7f87.tar.gz |
efl selection manager - fix anoyther binary buffer treated as string bug
yet another "binary buffer" (pointer + size) streated as a string with
strdup + strlen which is oh so wrong. this fixes up some cnp in
wayland with garbage at the end of strings
@fix
-rw-r--r-- | src/lib/elementary/efl_selection_manager.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/elementary/efl_selection_manager.c b/src/lib/elementary/efl_selection_manager.c index 5bdf7ff6ec..52edb97fd8 100644 --- a/src/lib/elementary/efl_selection_manager.c +++ b/src/lib/elementary/efl_selection_manager.c @@ -2384,10 +2384,15 @@ _wl_general_converter(char *target, Sel_Manager_Selection *sel, void *data, int } else { - if (data) + if ((data) && (size > 0)) { - if (data_ret) *data_ret = strdup(data); - if (size_ret) *size_ret = strlen(data); + char *tmp = malloc(size); + if (tmp) + { + memcpy(tmp, data, size); + if (data_ret) *data_ret = tmp; + if (size_ret) *size_ret = size; + } } else { |