aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--prog/mutation.go2
-rw-r--r--prog/prio.go2
-rw-r--r--prog/rand.go51
-rw-r--r--sys/decl.go1
-rw-r--r--sys/socket.txt16
-rw-r--r--sysgen/sysgen.go5
6 files changed, 16 insertions, 61 deletions
diff --git a/prog/mutation.go b/prog/mutation.go
index b03fccb5f..7b5330b87 100644
--- a/prog/mutation.go
+++ b/prog/mutation.go
@@ -102,8 +102,6 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro
}
case sys.BufferFilename:
arg.Data = []byte(r.filename(s))
- case sys.BufferSockaddr:
- arg.Data = r.sockaddr(s)
default:
panic("unknown buffer kind")
}
diff --git a/prog/prio.go b/prog/prio.go
index 8c05bda1e..c20aa8f52 100644
--- a/prog/prio.go
+++ b/prog/prio.go
@@ -85,8 +85,6 @@ func calcStaticPriorities() [][]float32 {
if a.SubKind != "" {
noteUsage(0.2, fmt.Sprintf("str-%v", a.SubKind))
}
- case sys.BufferSockaddr:
- noteUsage(1.0, "sockaddr")
case sys.BufferFilename:
noteUsage(1.0, "filename")
default:
diff --git a/prog/rand.go b/prog/rand.go
index bdcc89152..adbaa618a 100644
--- a/prog/rand.go
+++ b/prog/rand.go
@@ -5,7 +5,6 @@ package prog
import (
"bytes"
- "encoding/binary"
"fmt"
"math"
"math/rand"
@@ -193,48 +192,6 @@ func (r *randGen) inport(s *state) uint16 {
return uint16(r.Intn(20))<<8 + 0xab
}
-func (r *randGen) sockaddr(s *state) []byte {
- fa := sockFamilies[r.Intn(len(sockFamilies))]
- buf := new(bytes.Buffer)
- binary.Write(buf, binary.LittleEndian, fa) // this is actually host byte order
- switch fa {
- case sys.AF_UNIX:
- buf.WriteString(r.filename(s))
- case sys.AF_INET:
- binary.Write(buf, binary.LittleEndian, r.inport(s))
- binary.Write(buf, binary.LittleEndian, r.inaddr(s))
- case sys.AF_INET6:
- binary.Write(buf, binary.LittleEndian, r.inport(s))
- binary.Write(buf, binary.BigEndian, uint32(r.Int63())) // flow info
- binary.Write(buf, binary.BigEndian, uint64(0)) // addr: loopback
- binary.Write(buf, binary.BigEndian, uint64(1)) // addr: loopback
- binary.Write(buf, binary.BigEndian, uint32(r.Int63())) // scope id
- case sys.AF_IPX:
- case sys.AF_NETLINK:
- case sys.AF_X25:
- case sys.AF_AX25:
- case sys.AF_ATMPVC:
- case sys.AF_APPLETALK:
- case sys.AF_PACKET:
- binary.Write(buf, binary.BigEndian, uint16(0)) // Physical-layer protocol
- binary.Write(buf, binary.BigEndian, uint32(0)) // Interface number
- binary.Write(buf, binary.BigEndian, uint16(0)) // ARP hardware type
- binary.Write(buf, binary.BigEndian, uint8(0)) // Packet type
- binary.Write(buf, binary.BigEndian, uint8(0)) // Length of address
- binary.Write(buf, binary.BigEndian, uint64(0)) // Physical-layer address
- default:
- panic("unknown socket domain")
- }
- if r.oneOf(2) {
- buf.Write(make([]byte, 128-len(buf.Bytes())))
- }
- data := buf.Bytes()
- if r.oneOf(100) {
- data = data[:r.Intn(len(data))]
- }
- return data
-}
-
func (r *randGen) randString(s *state, vals []string, dir sys.Dir) []byte {
data := r.randStringImpl(s, vals)
if dir == sys.DirOut {
@@ -663,14 +620,6 @@ func (r *randGen) generateArg(s *state, typ sys.Type) (arg *Arg, calls []*Call)
case sys.BufferFilename:
filename := r.filename(s)
return dataArg(a, []byte(filename)), nil
- case sys.BufferSockaddr:
- data := r.sockaddr(s)
- if a.Dir() == sys.DirOut {
- for i := range data {
- data[i] = 0
- }
- }
- return dataArg(a, data), nil
default:
panic("unknown buffer kind")
}
diff --git a/sys/decl.go b/sys/decl.go
index 65dcf4fb5..bb82cfa18 100644
--- a/sys/decl.go
+++ b/sys/decl.go
@@ -104,7 +104,6 @@ const (
BufferBlobRange
BufferString
BufferFilename
- BufferSockaddr
)
type BufferType struct {
diff --git a/sys/socket.txt b/sys/socket.txt
index f33627855..7c17497f4 100644
--- a/sys/socket.txt
+++ b/sys/socket.txt
@@ -117,6 +117,22 @@ ip_mtu_discover = IP_PMTUDISC_DONT, IP_PMTUDISC_WANT, IP_PMTUDISC_DO, IP_PMTUDIS
sockopt_opt_ipv6_int = IPV6_ADDRFORM, IPV6_MTU, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_RECVPKTINFO, IPV6_RECVERR, IPV6_ROUTER_ALERT, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT, IPV6_CHECKSUM, IPV6_2292PKTINFO, IPV6_2292HOPOPTS, IPV6_2292DSTOPTS, IPV6_2292RTHDR, IPV6_2292HOPLIMIT
sockopt_opt_ipv6_mreq = IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_JOIN_ANYCAST, IPV6_LEAVE_ANYCAST
+sockaddr [
+ un sockaddr_un
+ in sockaddr_in
+ in6 sockaddr_in6
+ nl sockaddr_nl
+ ax25 sockaddr_ax25
+ alg sockaddr_alg
+ nfc sockaddr_nfc
+ nfc_llcp sockaddr_nfc_llcp
+ hci sockaddr_hci
+ sco sockaddr_sco
+ l2 sockaddr_l2
+ rc sockaddr_rc
+# TODO: other kinds of sockaddrs
+] [varlen]
+
sockaddr_in {
family const[AF_INET, int16]
port proc[int16be, 20000, 4]
diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go
index 59ab4e749..b0b5f6f52 100644
--- a/sysgen/sysgen.go
+++ b/sysgen/sysgen.go
@@ -449,11 +449,6 @@ func generateArg(
}
}
fmt.Fprintf(out, "&BufferType{%v, Kind: BufferString, SubKind: %q, Values: %#v}", common(), subkind, vals)
- case "sockaddr":
- if want := 0; len(a) != want {
- failf("wrong number of arguments for %v arg %v, want %v, got %v", typ, name, want, len(a))
- }
- fmt.Fprintf(out, "&BufferType{%v, Kind: BufferSockaddr}", common())
case "salg_type":
if want := 0; len(a) != want {
failf("wrong number of arguments for %v arg %v, want %v, got %v", typ, name, want, len(a))