Page MenuHomeFreeBSD

D26897.id78570.diff
No OneTemporary

D26897.id78570.diff

Index: sys/kern/sys_socket.c
===================================================================
--- sys/kern/sys_socket.c
+++ sys/kern/sys_socket.c
@@ -207,21 +207,34 @@
case FIONREAD:
/* Unlocked read. */
- *(int *)data = sbavail(&so->so_rcv);
+ if (SOLISTENING(so)) {
+ error = EINVAL;
+ } else {
+ *(int *)data = sbavail(&so->so_rcv);
+ }
break;
case FIONWRITE:
/* Unlocked read. */
- *(int *)data = sbavail(&so->so_snd);
+ if (SOLISTENING(so)) {
+ error = EINVAL;
+ } else {
+ *(int *)data = sbavail(&so->so_snd);
+ }
break;
case FIONSPACE:
/* Unlocked read. */
- if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) ||
- (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt))
- *(int *)data = 0;
- else
- *(int *)data = sbspace(&so->so_snd);
+ if (SOLISTENING(so)) {
+ error = EINVAL;
+ } else {
+ if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) ||
+ (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) {
+ *(int *)data = 0;
+ } else {
+ *(int *)data = sbspace(&so->so_snd);
+ }
+ }
break;
case FIOSETOWN:
@@ -242,7 +255,11 @@
case SIOCATMARK:
/* Unlocked read. */
- *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0;
+ if (SOLISTENING(so)) {
+ error = EINVAL;
+ } else {
+ *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0;
+ }
break;
default:
/*

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 14, 1:45 PM (11 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23723943
Default Alt Text
D26897.id78570.diff (1 KB)

Event Timeline