News for hackers. Stuff that matters.
Re:Every C99.php shell is backdoored by yeahbutbut on Tuesday June 24, 2014 @10:00AM (#7937746)
> "Let's make a function that has the side effect of introducing variables into scope. That's a great idea."

And ``let'' is? ;-)

Doing a (let [request] (check-auth ...)) would be equally dumb. Let's not blame the tools.

Re:Every C99.php shell is backdoored by jsn on Tuesday June 24, 2014 @10:32AM (#7937946)
That's not not how 'let' works, you can't do that with 'let'. You most definitely should blame the tools here.
Re:Every C99.php shell is backdoored by yeahbutbut on Tuesday June 24, 2014 @12:17PM (#7938556)
You're right, let is a macro so you can't pass binding forms from a variable, my mistake. But surely Scheme has some function for binding variables to the local scope...

My point is that trusting user input is the error, not having the ability to play with the scope.

Re:Every C99.php shell is backdoored by gdwatson on Tuesday June 24, 2014 @12:50PM (#7938755)
Scheme has forms that add bindings to the local scope -- local defines -- but they're similar in spirit to let. There aren't any such functions in standard Scheme, and I don't know of any major implementation that has any. It's not clear how they would interact with macros or macro hygiene, and they would do unpleasant things to lexical scope which is Scheme's original schtick.