What about this one?

--- af_irda.c   2011-01-13 20:41:26.000000000 +0100
+++ af_irda-dwokfur.c   2011-01-13 20:41:50.000000000 +0100
@@ -2286,7 +2286,7 @@

                if (len < offset) {
                        err = -EINVAL;
-                       goto out;
+                       goto bed;
                }

                /* Ask lmp for the current discovery log */

It still complains:

net/irda/af_irda.c: In function ‘irda_getsockopt’:
net/irda/af_irda.c:2258:27: warning: ‘discoveries’ may be used
uninitialized in this function
net/irda/af_irda.c:2258:27: note: ‘discoveries’ was declared here

Regards:
Dw.
-- 
dr Tóth Attila, Radiológus, 06-20-825-8057
Attila Toth MD, Radiologist, +36-20-825-8057

2011.Január 13.(Cs) 20:38 időpontban "Tóth Attila" ezt írta:
> Compiling the recent hardened-sources results in the following error
> message, when irda is enabled:
>
>   CC      net/irda/af_irda.o
> net/irda/af_irda.c: In function ‘__irda_getsockopt’:
> net/irda/af_irda.c:2289:4: error: label ‘out’ used but not defined
>
> The changes causing it introduced recently.
>
> --- linux-2.6.36-hardened-r7/net/irda/af_irda.c 2010-10-20
> 22:30:22.000000000 +0200
> +++ linux-2.6.36-hardened-r8/net/irda/af_irda.c 2011-01-13
> 13:08:57.000000000 +0100
> @@ -2278,6 +2278,17 @@
>
>         switch (optname) {
>         case IRLMP_ENUMDEVICES:
> +
> +
> +               /* Offset to first device entry */
> +               offset = sizeof(struct irda_device_list) -
> +                       sizeof(struct irda_device_info);
> +
> +               if (len < offset) {
> +                       err = -EINVAL;
> +                       goto out;
> +               }
> +
>                 /* Ask lmp for the current discovery log */
>                 discoveries = irlmp_get_discoveries(&list.len,
> self->mask.word,
>                                                     self->nslots);
> @@ -2287,15 +2298,9 @@
>                 err = 0;
>
>                 /* Write total list length back to client */
> -               if (copy_to_user(optval, &list,
> -                                sizeof(struct irda_device_list) -
> -                                sizeof(struct irda_device_info)))
> +               if (copy_to_user(optval, &list, offset))
>                         err = -EFAULT;
>
> -               /* Offset to first device entry */
> -               offset = sizeof(struct irda_device_list) -
> -                       sizeof(struct irda_device_info);
> -
>                 /* Copy the list itself - watch for overflow */
>                 if(list.len > 2048)
>                 {
>
> What are your suggestions?
>
> Thx:
> Dw.
> --
> dr Tóth Attila, Radiológus, 06-20-825-8057
> Attila Toth MD, Radiologist, +36-20-825-8057
>
>
>



Reply via email to