I had this issue with vanilla 2.6.32.27 patched with the 2.6.32.27 grsec patch (2-3 days ago).
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