Skip to content

Commit 0ae22e7

Browse files
committed
safety guard at startup, not during request time
(unless placeholders are used, bad idea anyway)
1 parent 6e3309a commit 0ae22e7

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

requestoptions.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,38 @@ func WithRequestEnv(env map[string]string) RequestOption {
130130
}
131131

132132
func WithRequestPreparedEnv(env PreparedEnv) RequestOption {
133+
env = ensurePreparedEnv(env)
134+
133135
return func(o *frankenPHPContext) error {
134136
o.env = env
135137

136138
return nil
137139
}
138140
}
139141

142+
// ensurePreparedEnv ensures every key is NUL-terminated
143+
// Empty keys are dropped
144+
func ensurePreparedEnv(env PreparedEnv) PreparedEnv {
145+
for k := range env {
146+
if k == "" || k[len(k)-1] != '\x00' {
147+
fixed := make(PreparedEnv, len(env))
148+
for k, v := range env {
149+
if k == "" {
150+
continue
151+
}
152+
if k[len(k)-1] != '\x00' {
153+
k += "\x00"
154+
}
155+
fixed[k] = v
156+
}
157+
158+
return fixed
159+
}
160+
}
161+
162+
return env
163+
}
164+
140165
func WithOriginalRequest(r *http.Request) RequestOption {
141166
return func(o *frankenPHPContext) error {
142167
o.originalRequest = r

0 commit comments

Comments
 (0)