Hi, Dave.

Thanks for your advice and quick respons.
I tried it.

----
fp_digit: 8
unsigned long: 8
FP_64BIT not defined
DIGIT_BIT: 64
CHAR_BIT: 8
FP_MAX_SIZE: 8704
FP_SIZE: 136
TFM_ASM not defined
fp_word: 8
ulong64: 8
unsigned long long: 8
CRYPT not defined
----

What should I just do in order to fix this problem? 
Please teach me how to set size of fp_word to 16.

T.Oyamada

On Tue, 24 Sep 2013 18:16:26 -0400
David Raynor <dray...@sourcefire.com> wrote:

> On Tue, Sep 24, 2013 at 4:37 PM, David Raynor <dray...@sourcefire.com>wrote:
> 
> > On Tue, Sep 24, 2013 at 2:05 AM, Tsutomu Oyamada 
> > <oyam...@promark-inc.com>wrote:
> >
> >> Hi,
> >>
> >> I investigated the value using the following programs.
> >>
> >> ----
> >> #include "stdlib.h"
> >> #include "bignum_fast.h"
> >>
> >> int main(int argc, char **argv) {
> >>
> >>         printf("fp_digit: %d\n",sizeof(fp_digit));
> >>         printf("unsigned long: %d\n",sizeof(unsigned long));
> >>
> >> #ifdef FP_64BIT
> >>         printf("FP_64BIT: %d\n",FP_64BIT);
> >> #else
> >>         printf("FP_64BIT not defined\n");
> >> #endif
> >>
> >> #ifdef DIGIT_BIT
> >>         printf("DIGIT_BIT: %d\n",DIGIT_BIT);
> >> #else
> >>         printf("DIGIT_BIT not defined\n");
> >> #endif
> >>
> >> #ifdef CHAR_BIT
> >>         printf("CHAR_BIT: %d\n",CHAR_BIT);
> >> #else
> >>         printf("CHAR_BIT not defined\n");
> >> #endif
> >>
> >> #ifdef FP_MAX_SIZE
> >>         printf("FP_MAX_SIZE: %d\n",FP_MAX_SIZE);
> >> #else
> >>         printf("FP_MAX_SIZE not defined\n");
> >> #endif
> >>
> >> #ifdef FP_SIZE
> >>         printf("FP_SIZE: %d\n",FP_SIZE);
> >> #else
> >>         printf("FP_SIZE not defined\n");
> >> #endif
> >>
> >> #ifdef TFM_ASM
> >>         printf("TFM_ASM: defined\n");
> >> #else
> >>         printf("TFM_ASM not defined\n");
> >> #endif
> >>
> >>         exit(0);
> >> }
> >> ----
> >>
> >> The result was as follows.
> >>
> >> fp_digit: 8
> >> unsigned long: 8
> >> FP_64BIT not defined
> >> DIGIT_BIT: 64
> >> CHAR_BIT: 8
> >> FP_MAX_SIZE: 8704
> >> FP_SIZE: 136
> >> TFM_ASM not defined
> >>
> >> Can you find a problem by this result?
> >>
> >> Thanks.
> >>
> >> --
> >> T.Oyamada
> >>
> >> _______________________________________________
> >> http://lurker.clamav.net/list/clamav-devel.html
> >> Please submit your patches to our Bugzilla: http://bugs.clamav.net
> >>
> >
> > I do not have an immediate fix, but that information does give me some
> > leads.
> >
> > Basic issue: the tomsfastmath code must be falling through to the code
> > block on lines 280-302 of fp_mul_comba.c.
> > 1) The right shift causing the warning is DIGIT_BIT (64).
> > 2) The datatype being shifted is fp_word.
> > 3) fp_word defined as "typedef ulong64 fp_word;" from bignum_fast.h line
> > 253
> > 4) ulong64 defined as "typedef unsigned long long ulong64;" from
> > bignum_fast.h line 248
> >
> > I think the problem is one of three issues:
> > A) fp_word is not defined as a 64-bit datatype.
> > B) line 301 of tomsfastmath/mul/fp_mul_comba.c is mistakenly downcasting t
> > from fp_word to fp_digit before shifting.
> > C) s390 is not allowing use of all 64 bits of fp_word.
> >
> > Problems A or B are easier fixed than C.
> >
> > Please add these lines to your test and re-run:
> >
> > printf("fp_word: %d\n",sizeof(fp_word));
> > printf("ulong64: %d\n",sizeof(ulong64));
> > printf("unsigned long long: %d\n",sizeof(unsigned long long));
> > #ifdef CRYPT
> >         printf("CRYPT: defined\n");
> > #else
> >         printf("CRYPT not defined\n");
> > #endif
> >
> > I would like to see the config.log file generated by running configure. It
> > would also be useful to have the full output from running make. The log
> > snip shows line 91, but I expect that it first warned about line 15.
> >
> > The easiest way to continue and share logfiles is via Bugzilla. Please
> > open a bug report on bugzilla.clamav.net on this issue. You can then
> > attach the files to that bug.
> >
> > Hope this helps,
> >
> >
> > Dave R.
> >
> > --
> > ---
> > Dave Raynor
> > Sourcefire Vulnerability Research Team
> > dray...@sourcefire.com
> >
> 
> I think I read something wrong, and I think I have an idea. It still needs
> to be confirmed by the additional test lines above. Re-reading the output,
> I think that the code is depending on fp_word being twice the size of
> fp_digit. Based on fp_digit size of 8 that means it would expect it to be
> 16. If sizeof(fp_word) is resolving to 8 and sizeof(fp_digit) is 8, that
> could be the problem. Then the fix would depend on whether fp_word can be
> made size 16 or must be constrained to size 8.
> 
> Let me know what you find,
> 
> Dave R.
> 
> -- 
> ---
> Dave Raynor
> Sourcefire Vulnerability Research Team
> dray...@sourcefire.com
> _______________________________________________
> http://lurker.clamav.net/list/clamav-devel.html
> Please submit your patches to our Bugzilla: http://bugs.clamav.net
> 


_______________________________________________
http://lurker.clamav.net/list/clamav-devel.html
Please submit your patches to our Bugzilla: http://bugs.clamav.net

Reply via email to