Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×

Comment Re:Throwing out all compatibility hooks makes it e (Score 3, Informative) 164

This is because the C standard is full of crap such as undead(maybe it was half-unsigned?) chars and non-zero NULL and Harvard architecture hacks. If you want to be sure your program will work as intended when some starry-eyed clang/gcc developer reasons he can optimize away your security code because it is undefined behavior, you must support all the brain-dead architectures that motivated the standard, in order to serve as canaries.
This is not related to supporting non-standard shitty libcs and OSes which run on 64-bit architectures and yet do not support 64-bit pointers.

Comment Re:Multiplatform? (Score 2) 164

No it's not, it is stated quite clearly that it is written for OpenBSD. OpenBSD is mostly "POSIX-compatible" but they aren't too shy to extend libc when there isn't a good alternative. The slides and the talk mention strlcpy/cat(unfortunately ignored by C11 but widely adopted everywhere but GLIBC) and reallocarray. Only obliquely referenced is a proper kernel API (P)RNG which is not available in most platforms(using /dev/*.random instead, which has many issues[1]).
However, like OpenSSH, you can expect the LibreSSL portability team to write wrappers to make the best of what there is in your OS. As opposed to the best Win16 could do.

[1] http://insanecoding.blogspot.j...

Comment Re:Perfect Software (Score 1) 664

Anyone who thinks all software has bugs has never written "Hello World" in assembly.

Perfect, trivial software is clearly possible. Perfect software that's slightly more complex is also clearly possible. We haven't yet accepted that perfect software is possible, but we should demand it (for moderately expensive software, or where bugs will cost you money, for instance). A reasonably intelligent programmer writing a modestly complex program should be able to do so perfectly. That he can't, (because his tools don't help him do so) is infuriating.

Yes, almost all software has bugs. We are way too comfortable with the idea. Software doesn't need to have bugs. We just don't have toolchains and development stacks that encourage perfect software. It's as if engineers decided to only use modeling clay for buildings, because nobody sells steel, and it's too cumbersome to smelt their own.

The profession really is no better off for accepting this sorry state.

Sorry, but you are wrong. A perfect Hello World written in assembly according to specification and formally proofed can have bugs in not one but two cases.

  • * The specifications are wrong.
  • * The CPU has a bug.

Hardware people can be clueless retards as well

CPU bugs are something you only read about in books until you actually try to do something non-trivial with the CPU.

Comment Re:coding standards (Score 3, Informative) 664

Sorry. I work in automotive embedded systems(although not personally in safety-critical parts we use the same parts and rules) and I can tell you rules like yours were behind this.

We are following all these rules and so we are safe. We can save a penny per 1000 units sold using a crappy MMU-less CPU.

First of all, following the stupid rules requires you to use baroque lint imitations which will go off on every line of idiomatic C. You need a paper trail to justify every line of code. Seems about right, people's lives are in danger, right?

Now consider that the controller system is hundreds of thousand of LOCs(for us it's more like millions). Most of that is crap boilerplate code required by the standards. This means if you follow that methodology strictly, you need hundreds of people going through mindnumbing lists of "You are not using this argument/This code assigning an argument to itself does nothing". Given that most software developers are inept and overworked, I can give you a certificate that there will be bugs.

It took me two weeks with the code to find a checksum function used all over the place that had been "fixed" to detect offset data after some earlier corruption bug was not detected.

Every 256 bytes "checksummed", a bit from the input would be left unaccounted(And it was actually used for data several times larger than that). I know for a fact that had to go through at least three source and design reviews and at least one more design review with some fat managers higher up.

Now tell me you feel safe.

Note to PHBs: Googleing up a fucking working CRC and getting a CS PhD to make a formal proof that it will work as intended would have cost far less.

Also, you see, the crappy CPU vendor stack measuring tools - that rules say we must use to guarantee safety - don't account for function pointers(they do show scary icons for recursive functions). They say foo(384) bar(uhhm... maybe 0?) I know to look for that when I add calls to function pointers, but I guess most people don't.

Now you add another rule. LOZRA 4092: You can't use function pointers at all.

Make my life more miserable, give the remaining work I will be unable to do to Dave, the monstera plant, or someone with the same programming aptitude.

I will give the crappy CPU/Compiler/RTOS vendors that should be sued free advice:

0- Add an MPU

1- Add canaries to every function call with any local variable at all(here it's not hackers it's programmers following LOZRA 396: cast the shit off everything so the compiler can't tell)

2- Add stack overflow canaries on every task switch. (add an MPU and align to page in the stack growing direction)

3- Add canaries to any memory pool allocation. (add MPU dead pages - You don't need RAM, just fucking address space of which you are using like 2%)

4- If any of the above traps, jump to a customer defined function(stored in ROM than can only be physically modified by outside hardware) that puts all vital hardware in a safe state, adds a record to the black box and reset the whole thing from scratch.

5- Forget about tasks and threads and move on to processes running on separate address spaces. If information must flow from a to b it better go through accepted channels. 6- Did I tell you to add a fucking MPU!?

Comment Re:Surprise (Score 1) 173

I can hardly thank you enough!
I can't believe I could have been using my computer at night without redshift.
There is a package for OpenBSD and you can check if your system is supported on their homepages.
My xterms are goddamned sunsets.
I am moved.
Thank you.

Comment Re:No surprise there (Score 1) 263

If you only have two messages you can only get K^A K^B and A^B. This doesn't directly give you the key.
However as A^B is just a plaintext encoded plaintext, decyphering both plaintexts is relatively easy. Where relatively here means infinitely easier than provable impossibility.
Ridiculously easy if A and B were black and white images. See http://www.cryptosmith.com/archives/70
Getting the key is then trivial.

Comment Re:any questions? (Score 1) 360

Your job is finding a way to both comply with their requirements and getting quality software out. If after thinking it through with your coworkers there is no way you could get it done, your job is then to tell them they are full of shit and go get us new requirements. If unresponsive repeat and rinse with their superiors.

Comment Re:How about tri-ligual, quad-ligual ? (Score 2) 221

It may be more the fact that her parents were switching randomly, than the number itself. We can have many neuronal paths in parallel but they are organized by context. switch(p){case MOM: l = Japanese; break; case DAD: l = Korean; break; case TEACHER: l = English; break;} is more optimal than if p=(p==MOM)?(p->l==Japanese)?Japanese:Korean:(p==DAD)(p->l==Korean)?Korean:English;.....

Comment Re:He can't win (Score 1) 214

at least from when he started coding school systems to put him into classes with more girls

That is more "fucking awsome" than "bastard", even if today it would get his ass raped in some federal prison.
I'd say coding a BASIC interpreter in 4kb using paper and an emulator you hacked up for an unreleased platform is pretty cool as well.
Then he started hearing calls from the dark side and the rest is History.

All in all, I think he is an admirable man if only in the same category as Genghis Khan - who also did a lot genetic health related work for Eurasian people.

Comment Re:Bone Parts? (Score 4, Interesting) 99

The arms in theropods are like avian wings in that for most species they are in a rigid clapping position. There was a Slashdot article about this some time ago. Actually clapping doesn't quite describe it as you'll find ancient bird fossils have their claws facing forwards just like this one.
The "damaged" hip is actually one of the two main features used to tell a theropod away from other dinosaurs. The theropods ischium is facing backwards, while their illium faces forwards. This is the ancestral configuration, although it was secondarily lost in the species most closely related to birds, which have *both* facing backwards,
Plant-eating Ornithischia, like the Triceratops, on the other hand, evolved that "new" hip configuration much earlier.

Slashdot Top Deals

Software production is assumed to be a line function, but it is run like a staff function. -- Paul Licker

Working...