Files
codeql/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeGood.go
2024-03-07 15:17:49 +01:00

95 lines
2.1 KiB
Go

package main
import (
"encoding/json"
"fmt"
"net/http"
"strconv"
)
func OutOfMemoryGood1(w http.ResponseWriter, r *http.Request) {
source := r.URL.Query()
MaxValue := 6
sourceStr := source.Get("n")
sink, err := strconv.Atoi(sourceStr)
if err != nil || sink < 0 {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
if sink > MaxValue {
return
}
result := make([]string, sink)
for i := 0; i < sink; i++ {
result[i] = fmt.Sprintf("Item %d", i+1)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(result)
}
func OutOfMemoryGood2(w http.ResponseWriter, r *http.Request) {
source := r.URL.Query()
MaxValue := 6
sourceStr := source.Get("n")
sink, err := strconv.Atoi(sourceStr)
if err != nil || sink < 0 {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
if sink <= MaxValue {
result := make([]string, sink)
for i := 0; i < sink; i++ {
result[i] = fmt.Sprintf("Item %d", i+1)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(result)
}
}
func OutOfMemoryGood3(w http.ResponseWriter, r *http.Request) {
source := r.URL.Query()
MaxValue := 6
sourceStr := source.Get("n")
sink, err := strconv.Atoi(sourceStr)
if err != nil || sink < 0 {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
if sink > MaxValue {
sink = MaxValue
result := make([]string, sink)
for i := 0; i < sink; i++ {
result[i] = fmt.Sprintf("Item %d", i+1)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(result)
}
}
func OutOfMemoryGood4(w http.ResponseWriter, r *http.Request) {
source := r.URL.Query()
MaxValue := 6
sourceStr := source.Get("n")
sink, err := strconv.Atoi(sourceStr)
if err != nil || sink < 0 {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
if sink > MaxValue {
sink = MaxValue
} else {
tmp := sink
sink = tmp
}
result := make([]string, sink)
for i := 0; i < sink; i++ {
result[i] = fmt.Sprintf("Item %d", i+1)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(result)
}