projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add sanity check for return of sotoinpcb() and intotcpcb()
[unix-history]
/
sys
/
netinet
/
tcp_usrreq.c
diff --git
a/sys/netinet/tcp_usrreq.c
b/sys/netinet/tcp_usrreq.c
index
9ba0fb6
..
0ddf870
100644
(file)
--- a/
sys/netinet/tcp_usrreq.c
+++ b/
sys/netinet/tcp_usrreq.c
@@
-31,7
+31,7
@@
* SUCH DAMAGE.
*
* from: @(#)tcp_usrreq.c 7.15 (Berkeley) 6/28/90
* SUCH DAMAGE.
*
* from: @(#)tcp_usrreq.c 7.15 (Berkeley) 6/28/90
- * $Id: tcp_usrreq.c,v 1.
2 1993/10/16 18:26:36 rgrimes
Exp $
+ * $Id: tcp_usrreq.c,v 1.
5 1994/01/24 05:12:36 davidg
Exp $
*/
#include "param.h"
*/
#include "param.h"
@@
-58,13
+58,14
@@
#include "tcp_timer.h"
#include "tcp_var.h"
#include "tcpip.h"
#include "tcp_timer.h"
#include "tcp_var.h"
#include "tcpip.h"
+#ifdef TCPDEBUG
#include "tcp_debug.h"
#include "tcp_debug.h"
+#endif
/*
* TCP protocol interface to socket abstraction.
*/
extern char *tcpstates[];
/*
* TCP protocol interface to socket abstraction.
*/
extern char *tcpstates[];
-struct tcpcb *tcp_newtcpcb();
/*
* Process a TCP user request for TCP tb. If this is a send request
/*
* Process a TCP user request for TCP tb. If this is a send request
@@
-73,10
+74,11
@@
struct tcpcb *tcp_newtcpcb();
*/
/*ARGSUSED*/
int
*/
/*ARGSUSED*/
int
-tcp_usrreq(so, req, m, nam, control)
+tcp_usrreq(so, req, m, nam, control
, dummy
)
struct socket *so;
int req;
struct mbuf *m, *nam, *control;
struct socket *so;
int req;
struct mbuf *m, *nam, *control;
+ struct mbuf *dummy;
{
register struct inpcb *inp;
register struct tcpcb *tp = 0;
{
register struct inpcb *inp;
register struct tcpcb *tp = 0;
@@
-332,8
+334,10
@@
tcp_usrreq(so, req, m, nam, control)
default:
panic("tcp_usrreq");
}
default:
panic("tcp_usrreq");
}
+#ifdef TCPDEBUG
if (tp && (so->so_options & SO_DEBUG))
tcp_trace(TA_USER, ostate, tp, (struct tcpiphdr *)0, req);
if (tp && (so->so_options & SO_DEBUG))
tcp_trace(TA_USER, ostate, tp, (struct tcpiphdr *)0, req);
+#endif
splx(s);
return (error);
}
splx(s);
return (error);
}
@@
-347,12
+351,15
@@
tcp_ctloutput(op, so, level, optname, mp)
{
int error = 0;
struct inpcb *inp = sotoinpcb(so);
{
int error = 0;
struct inpcb *inp = sotoinpcb(so);
- register struct tcpcb *tp
= intotcpcb(inp)
;
+ register struct tcpcb *tp;
register struct mbuf *m;
if (level != IPPROTO_TCP)
return (ip_ctloutput(op, so, level, optname, mp));
register struct mbuf *m;
if (level != IPPROTO_TCP)
return (ip_ctloutput(op, so, level, optname, mp));
+ if (!inp || !(tp = intotcpcb(inp)))
+ return (EINVAL);
+
switch (op) {
case PRCO_SETOPT:
switch (op) {
case PRCO_SETOPT:
@@
-397,14
+404,6
@@
tcp_ctloutput(op, so, level, optname, mp)
return (error);
}
return (error);
}
-#ifdef TCP_SMALLSPACE
-u_long tcp_sendspace = 1024*4;
-u_long tcp_recvspace = 1024*4;
-#else
-u_long tcp_sendspace = 1024*16;
-u_long tcp_recvspace = 1024*16;
-#endif /* TCP_SMALLSPACE */
-
/*
* Attach TCP protocol to socket, allocating
* internet protocol control block, tcp control block,
/*
* Attach TCP protocol to socket, allocating
* internet protocol control block, tcp control block,