[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] 9p: Convert use of atoi to qemu_strtoi to al
From: |
Greg Kurz |
Subject: |
Re: [Qemu-devel] [PATCH v2] 9p: Convert use of atoi to qemu_strtoi to allow error checking |
Date: |
Mon, 12 Mar 2018 18:07:46 +0100 |
On Mon, 12 Mar 2018 11:00:39 -0500
Eric Blake <address@hidden> wrote:
> On 03/12/2018 10:50 AM, nee wrote:
>
> >>> } else if (perm & P9_STAT_MODE_LINK) {
> >>> - int32_t ofid = atoi(extension.data);
> >>> - V9fsFidState *ofidp = get_fid(pdu, ofid);
> >>> + int ofid;
> >>
> >>
> >> 'unsigned int' and...
> >>
> >>> + V9fsFidState *ofidp;
> >>> +
> >>> + if (qemu_strtoi(extension.data, NULL, 10, &ofid)) {
> >>
> >>
> >> qemu_strtoui() might be smarter, per Greg's comments on v1.
> >>
> >>> + err = -EINVAL;
> >>> + goto out;
> >>> + }
> >>> + ofidp = get_fid(pdu, (int32_t)ofid);
> >>
> >>
> >> This cast is spurious.
> >>
> >> --
> >> Eric Blake, Principal Software Engineer
> >> Red Hat, Inc. +1-919-301-3266
> >> Virtualization: qemu.org | libvirt.org
> >
> > I did this because get_fid() takes an int32_t, not an unsigned int.
> > The struct V9fsFidState also uses an int32_t for its `fid` member. Do
> > you want me to change all these types, or just the function being used
> > here?
>
> I'll let Greg answer; he's more familiar with the 9p code (I was just
> commenting based on his initial answer to v1).
>
Yeah... as I was saying, fids are 32-bit unsigned per spec but the code is
using int32_t indeed. This is incorrect and it should be fixed.