On Fri, 2011-10-14 at 13:17 +0200, Thomas Jarosch wrote:
> Patch is not compile tested as I lack some
> dependencies to build NM on this box.
> 
> Signed-off-by: Thomas Jarosch <[email protected]>
> ---
>  src/nm-device-ethernet.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c
> index 8556c5b..87cd57e 100644
> --- a/src/nm-device-ethernet.c
> +++ b/src/nm-device-ethernet.c
> @@ -343,6 +343,7 @@ _update_s390_subchannels (NMDeviceEthernet *self)
>       while ((item = g_dir_read_name (dir))) {
>               char buf[50];
>               char *cdev_path;
> +             ssize_t link_len;
>  
>               if (strncmp (item, "cdev", 4))
>                       continue;  /* Not a subchannel link */
> @@ -351,7 +352,9 @@ _update_s390_subchannels (NMDeviceEthernet *self)
>  
>               memset (buf, 0, sizeof (buf));

My initial read is that the memset would terminate the buffer, since
we're passing sizeof (buf) - 1 into the call, the last byte of the
buffer will always be 0, no?  And if readlink() doesn't fill the buffer,
the remaining bytes will already be set to 0 by the memset, AFAICT.  Are
you seeing a crash here or was this from visual inspection?

Dan

>               errno = 0;
> -             if (readlink (cdev_path, &buf[0], sizeof (buf) - 1) >= 0) {
> +             if ((link_len = readlink (cdev_path, buf, sizeof (buf) - 1)) >= 
> 0) {
> +                     buf[link_len] = 0;
> +
>                       if (!priv->subchan1)
>                               priv->subchan1 = g_path_get_basename (buf);
>                       else if (!priv->subchan2)


_______________________________________________
networkmanager-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to