Hacker News new | ask | show | jobs
by oneepic 783 days ago
I read TFA. Why would a truncated partial download happen and still run the script?
3 comments

I believe 'curl XXX | sh' will start executing any complete shell statements in the input, before the full script is downloaded.
The most obvious answer is `curl | sh`. But also perhaps a network blip interrupting curl/wget, but the user failing to notice and going ahead and executing the file anyway.
A truncated download might happen for all sorts of reasons, like your internet connection dropping while you download the script. If you don't notice you might accidentally run an incomplete script and leave your system in some broken or at least confusing state. They wrapped everything in a main function to prevent that from happening
Browsers typically emit downloads to temporary files until they are complete, then rename them into the final location, to prevent this kind of issue.
Tools like wget or curl often do not. And the shell doesn't when doing something like `curl ... >myscript.sh`.
Sure. Just pointing out that there's a good reason browsers do this.