As seen in `inode_del` (and `inode_alloc`), a free (`NOT_INIT`) node can be found anywhere in `g_vfs_dev_nodes`; it’s a “sparse” list.
So when checking for free nodes, the iterating index variable (`e`) shall be used, not the counter (`count`). The code got that wrong.
For instance, if the first node is not available (type is not `VFS_TYPE_NOT_INIT`), then the function previously returned 0, no matter what, and was iterating the node list in vain.
This adds some basic checks to the subroutines of eap_input to check
that we have requested or agreed to doing EAP authentication before
doing any processing on the received packet. The motivation is to
make it harder for a malicious peer to disrupt the operation of pppd
by sending unsolicited EAP packets. Note that eap_success() already
has a check that the EAP client state is reasonable, and does nothing
(apart from possibly printing a debug message) if not.
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>