Message ID | 20240411101550.99392-11-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | misc: Remove sprintf() due to macOS deprecation | expand |
On 4/11/24 03:15, Philippe Mathieu-Daudé wrote: > sprintf() is deprecated on Darwin since macOS 13.0 / XCode 14.1, > resulting in painful developper experience. > > Use qemu_hexdump_line() to avoid sprintf() calls, silencing: > > [105/169] Compiling C object libcommon.fa.p/hw_scsi_scsi-disk.c.o > hw/scsi/scsi-disk.c:2659:14: warning: 'sprintf' is deprecated: > This function is provided for compatibility reasons only. > Due to security concerns inherent in the design of sprintf(3), > it is highly recommended that you use snprintf(3) instead. > [-Wdeprecated-declarations] > p += sprintf(p, " 0x%02x", buf[i]); > ^ > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > hw/scsi/scsi-disk.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c > index 4bd7af9d0c..4f914df5c2 100644 > --- a/hw/scsi/scsi-disk.c > +++ b/hw/scsi/scsi-disk.c > @@ -2648,16 +2648,12 @@ static const SCSIReqOps *const scsi_disk_reqops_dispatch[256] = { > > static void scsi_disk_new_request_dump(uint32_t lun, uint32_t tag, uint8_t *buf) > { > - int i; > int len = scsi_cdb_length(buf); > - char *line_buffer, *p; > + char *line_buffer; > > assert(len > 0 && len <= 16); > - line_buffer = g_malloc(len * 5 + 1); > > - for (i = 0, p = line_buffer; i < len; i++) { > - p += sprintf(p, " 0x%02x", buf[i]); > - } > + line_buffer = qemu_hexdump_line(buf, 0, len, false); This is adding "0000: " as an unnecessary prefix, because it's added by qemu_hexdump_line. I think having qemu_hexdump_line as a primitive is good, but probably the offset argument should be dropped and printed by the two callers that need it (mostly qemu_hexdump). r~
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 4bd7af9d0c..4f914df5c2 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2648,16 +2648,12 @@ static const SCSIReqOps *const scsi_disk_reqops_dispatch[256] = { static void scsi_disk_new_request_dump(uint32_t lun, uint32_t tag, uint8_t *buf) { - int i; int len = scsi_cdb_length(buf); - char *line_buffer, *p; + char *line_buffer; assert(len > 0 && len <= 16); - line_buffer = g_malloc(len * 5 + 1); - for (i = 0, p = line_buffer; i < len; i++) { - p += sprintf(p, " 0x%02x", buf[i]); - } + line_buffer = qemu_hexdump_line(buf, 0, len, false); trace_scsi_disk_new_request(lun, tag, line_buffer); g_free(line_buffer);
sprintf() is deprecated on Darwin since macOS 13.0 / XCode 14.1, resulting in painful developper experience. Use qemu_hexdump_line() to avoid sprintf() calls, silencing: [105/169] Compiling C object libcommon.fa.p/hw_scsi_scsi-disk.c.o hw/scsi/scsi-disk.c:2659:14: warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Wdeprecated-declarations] p += sprintf(p, " 0x%02x", buf[i]); ^ Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/scsi/scsi-disk.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)