Explorar el Código

pppoatm: allow assign only on a connected socket

The pppoatm does not check if used vcc is in connected state,
causing an Oops in pppoatm_send() when vcc->send() is called
on not fully connected socket.

Now pppoatm can be assigned only on connected sockets; otherwise
-EINVAL error is returned.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Cc: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Krzysztof Mazur hace 12 años
padre
commit
3b1a914595
Se han modificado 1 ficheros con 2 adiciones y 0 borrados
  1. 2 0
      net/atm/pppoatm.c

+ 2 - 0
net/atm/pppoatm.c

@@ -406,6 +406,8 @@ static int pppoatm_ioctl(struct socket *sock, unsigned int cmd,
 			return -ENOIOCTLCMD;
 			return -ENOIOCTLCMD;
 		if (!capable(CAP_NET_ADMIN))
 		if (!capable(CAP_NET_ADMIN))
 			return -EPERM;
 			return -EPERM;
+		if (sock->state != SS_CONNECTED)
+			return -EINVAL;
 		return pppoatm_assign_vcc(atmvcc, argp);
 		return pppoatm_assign_vcc(atmvcc, argp);
 		}
 		}
 	case PPPIOCGCHAN:
 	case PPPIOCGCHAN: