[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-gnutls] Re: Really I can not understand nothing of SSL... For the
From: |
Fran |
Subject: |
[Help-gnutls] Re: Really I can not understand nothing of SSL... For the moment to avoid confusion... |
Date: |
Sat, 13 Aug 2005 13:57:28 +0200 |
> > I suggest this modifications for certtoll-cfg.c function read_int(), for
> > the moment:
> > Something like this:
> > Line 32:
> >> #include <limits.h>
> > Line 224:
> >> if (atoll (input) > INT_MAX) /*Could be other condition*/
> >> {
> >> fprintf (stderr, "Sorry certtool still not support numbers larger
> >> that: %u\n", INT_MAX);
> >> return 0;
> >> };
>
> atoll isn't available on C89 platforms..
Right, atoi (obsolete) , and atoll (C99 and obsolete),but "something
like" this is not "this".
What about this?
>
> #include <limits.h>
> #include <errno.h>
>
> int
> read_int (const char *input_str)
> {
> char input[128];
>
> unsigned char buf[512]; /* I don' t known max size of errors returned */
> int err;
> unsigned char cond = 1;
>
> while (cond)
> {
> fputs (input_str, stderr);
> fgets (input, sizeof (input), stdin);
>
> cond = (((err = strtol (input, NULL, 10)) >= INT_MAX) || (err ==
> EINVAL) || (err == ERANGE) || (strlen (input) == 1) || (err == 0));
> /*last value not permited INT_MAX -1, zero I think that should not be used,
> ERANGE not used */
> if (cond)
> {
> if ((err == EINVAL) || (err == ERANGE))
> {
> strerror_r (err, buf, sizeof (buf)); /* It's C89 ? */
> fprintf (stderr, "Error : Function fail to get int value: %s",
> buf);
> }
> else
> {
> fprintf (stderr, "Error : Number is too big for certtool, zero
> or invalid\n");
> };
> /* return 0;*/
> }
> else
> {
> fprintf (stderr, "Value set to: %u", err);
> };
> };
>
> return atoi (input);
> }
I think that certool should not caught values that can not process.
That's all.
Regards,