Hi,
> +
> +unsigned long __stack_chk_guard = 0xfeedf00ddeadbeef;

sizeof(unsigned long) isn't always 8, even gcc issues a warning when it's 
invoked with proper options (e.g. 32-bit build):

> warning: conversion from ‘long long unsigned int’ to ‘long unsigned int’ 
> changes value from ‘18369602397475290863’ to ‘3735928559’ [-Woverflow]

Maybe there's some better way to initialize this variable. E.g. with #if … 
#else … #endif or using some initialization function that is invoked early.
I should also mention that a fixed canary value doesn't actually bring proper 
protection against exploits, thus run-time initialization with a random value 
is usually preferred.

I'm not sure whether it's important at all in bootloader code, I just wanted to 
be sure that it isn't unnoticed.

Cheers, Alex.

Reply via email to