if (erq->pointer) if (copy_to_user(erq->pointer, essidbuf, erq->length)) return -EFAULT; 
static int orinoco_ioctl_getessid(struct net_device *dev, struct iw_point *erq){	struct orinoco_private *priv = netdev_priv(dev);	char essidbuf[IW_ESSID_MAX_SIZE+1];	int active;	int err = 0;	unsigned long flags;	TRACE_ENTER(dev->name);	if (netif_running(dev)) {		err = orinoco_hw_get_essid(priv, &active, essidbuf);		if (err)			return err;	} else {		if (orinoco_lock(priv, &flags) != 0)			return -EBUSY;		memcpy(essidbuf, priv->desired_essid, sizeof(essidbuf));		orinoco_unlock(priv, &flags);	}	erq->flags = 1;	erq->length = strlen(essidbuf) + 1;	if (erq->pointer)		if (copy_to_user(erq->pointer, essidbuf, erq->length))			return -EFAULT;	TRACE_EXIT(dev->name);		return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/620554e406e3cc01434c658a1e597162d7e56fd6/orinoco.c/buggy/drivers/net/wireless/orinoco.c