I am getting the following warning from gcc when compiling the daemon:
> # github.com/docker/docker/pkg/devicemapper
> pkg/devicemapper/devmapper_wrapper.go: In function ‘log_cb’:
> pkg/devicemapper/devmapper_wrapper.go:20:2: warning: ignoring return
> value of ‘vasprintf’, declared with attribute warn_unused_result
> [-Wunused-result]
> vasprintf(&buffer, f, ap);
> ^
vasprintf(3) man page says if the function returns -1, the buffer is
undefined, so we should not use it. In practice, I assume, this never
happens so we just return.
Introduced by https://github.com/moby/moby/pull/33845 that resulted in
commit 63328c6 ("devicemapper: remove 256 character limit of libdm logs")
Cc: Aleksa Sarai <asarai@suse.de>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
| ... | ... |
@@ -15,10 +15,15 @@ static void log_cb(int level, const char *file, int line, int dm_errno_or_class, |
| 15 | 15 |
{
|
| 16 | 16 |
char *buffer = NULL; |
| 17 | 17 |
va_list ap; |
| 18 |
+ int ret; |
|
| 18 | 19 |
|
| 19 | 20 |
va_start(ap, f); |
| 20 |
- vasprintf(&buffer, f, ap); |
|
| 21 |
+ ret = vasprintf(&buffer, f, ap); |
|
| 21 | 22 |
va_end(ap); |
| 23 |
+ if (ret < 0) {
|
|
| 24 |
+ // memory allocation failed -- should never happen? |
|
| 25 |
+ return; |
|
| 26 |
+ } |
|
| 22 | 27 |
|
| 23 | 28 |
DevmapperLogCallback(level, (char *)file, line, dm_errno_or_class, buffer); |
| 24 | 29 |
free(buffer); |