3 ms·
Back in the PDP-10 days, one communicated with it using a terminal attached to it. One of my fellow students discovered that if you hit backspace enough times,
by WalterBright 7mo ago
Back in the PDP-10 days, one communicated with it using a terminal attached to it. One of my fellow students discovered that if you hit backspace enough times, the terminal handler would keep erasing characters before the buffer. Go far enough, and then there was an escape character (Ctrl-u?) that would delete the whole line.
Poof went the operating system!
- jml7c5 7mo agoThat reminds me of "Real Life Tron on an Apple IIgs". There's something so charming about system memory being misinterpreted. https://blog.danielwellman.com/2008/10/real-life-tron-on-an-apple-iigs.html https://blog.danielwellman.com/2008/10/real-life-tron-on-an-...
- tolciho 7mo agocontrol+u for line-kill is probably a recent thing, a random PDF of "The Unix Programming Environment" (Kernighan & Pike, 1984, p.6) has @ as the line-kill character (and # is erase which these days may or may not be control+? (linux often does something wrong with the delete key, unlike the *BSD)).
- kps 7mo agoTOPS-20 used ^U. (That's where BSD got it, along with ^W, whence it percolated into other *nix.)
- WalterBright 7mo agoI was right. It was the ^U! Thank you.
- ButlerianJihad 7mo ago[flagged]
- WalterBright 7mo agoLOL. It's a fact. It was discovered by a fellow student.
- ButlerianJihad 7mo ago[flagged]
- WalterBright 7mo ago> It’s quite impossible. Do you know all about 1970s operating systems? Why do you find it hard to believe that a loop deleting backwards from the buffer wouldn't, say, zero out the stack frame and then a function return crashes it? > Was it identified as a bug or vulnerability? What difference does that make? It crashed the -10. It was reported. > What OS, even? The TOPS-10 operating system, or its predecessor. I don't recall just when TOPS-10 came out. It was 50 years ago.
- ButlerianJihad 7mo ago[flagged]
- rcxdude 7mo agoIt's really not a very hard thing to imagine. The contents of the terminal screen were likely just a simple buffer in memory with the cursor position being a pointer into that memory. One missing bounds check and backspace starts messing with OS datastructures.
- shakna 7mo agoI'd call it even likely, with most of the flat memory OSs of the past. We are talking 50 years ago. C64 had a flat memory map, where the input came as the first address in range 0 to DFFF. What came after that? The kernel. So if you wrote too much data into the input address space, and the overflow wasn't caught, you'd overwrite the OS there, too. And writing into the IO table was common, because it was faster to access.