Преглед изворни кода

Minor bug fix for keytab parse. Check that we don't overshoot our byte array and fix key length if statements.

Erik Schluter пре 8 година
родитељ
комит
872dc15a57
1 измењених фајлова са 3 додато и 4 уклоњено
  1. 3 4
      keytab/keytab.go

+ 3 - 4
keytab/keytab.go

@@ -137,9 +137,8 @@ func Parse(b []byte) (kt Keytab, err error) {
 			//Zero padded so skip over
 			l = l * -1
 			n = n + int(l)
-		}
-		if l > 0 {
-			//fmt.Printf("Bytes for entry: %v\n", b[p:p+int(l)])
+		} else {
+			//fmt.Printf("Bytes for entry: %v\n", b[n:n+int(l)])
 			eb := b[n : n+int(l)]
 			n = n + int(l)
 			ke := newKeytabEntry()
@@ -166,7 +165,7 @@ func Parse(b []byte) (kt Keytab, err error) {
 			kt.Entries = append(kt.Entries, ke)
 		}
 		// Check if there are still 4 bytes left to read
-		if len(b[n:]) < 4 {
+		if n > len(b) || len(b[n:]) < 4 {
 			break
 		}
 		// Read the size of the next entry