Explorar o código

[PATCH] orinoco: fix setting of 32 character ESSIDs

Patch from Thomas Schulz

Index: linux-2.6/drivers/net/wireless/orinoco.c
===================================================================
Christoph Hellwig %!s(int64=20) %!d(string=hai) anos
pai
achega
d0e3e87ff4
Modificáronse 1 ficheiros con 3 adicións e 2 borrados
  1. 3 2
      drivers/net/wireless/orinoco.c

+ 3 - 2
drivers/net/wireless/orinoco.c

@@ -2907,13 +2907,14 @@ static int orinoco_ioctl_setessid(struct net_device *dev, struct iw_point *erq)
 	memset(&essidbuf, 0, sizeof(essidbuf));
 
 	if (erq->flags) {
-		if (erq->length > IW_ESSID_MAX_SIZE)
+		/* iwconfig includes the NUL in the specified length */
+		if (erq->length > IW_ESSID_MAX_SIZE+1)
 			return -E2BIG;
 		
 		if (copy_from_user(&essidbuf, erq->pointer, erq->length))
 			return -EFAULT;
 
-		essidbuf[erq->length] = '\0';
+		essidbuf[IW_ESSID_MAX_SIZE] = '\0';
 	}
 
 	if (orinoco_lock(priv, &flags) != 0)