Le 22.10.03, Ben Collins a tapoté :

| This is a bug in the code. Too much allocation on the stack:
|
| int read_infos (int socket_data, char **infos) {
|     int  nb;
|     char datas[SSIZE_MAX];
|
|     /* SSIZE_MAX = 2147483647 */
|
| That's 2 gigs of stack allocation...not likely to happen :) It produces

        Oups. I made a %s/ change without checking all results :) I
        appologize.


| this overflow of stack in assembly:
|
| read_infos:
| .LLFB46:
|       .loc 1 197 0
|       !#PROLOGUE# 0
|       save    %sp, --2147483544, %sp
|
| Notice the double negative, produces by overflowing the stack pointer,

        I'm not very familiar with compilers internals but (I once made
        a code-generator, that's all) but how can a double negative can
        happen ?


| which only uses, internally, a signed int. That is plenty enough to hold
| a normal, legal stack, but not really enough for your needs.

        Ok. So wouldn't it be more usefull to get a compiler message that
        is more explicit ?


| If you need that much (I can't see that you would), then malloc it.

        I don't need that much, in fact. I just need to ensure that what
        is send from one side of a client/server connection is fully
        received at the other side...


        Thank you for all you help !


Thomas
-- 
BOFH excuse #414:
Tachyon emissions overloading the system.


Reply via email to