/* unsigned add of b to a */int BN_uadd(BIGNUM *r, const BIGNUM *a, const 
BIGNUM *b)    {       int max,min,dif;        BN_ULONG *ap,*bp,*rp,carry,t1,t2; 
      const BIGNUM *tmp;
        bn_check_top(a);        bn_check_top(b);
        if (a->top < b->top)            { tmp=a; a=b; b=tmp; }  max = a->top;   
min = b->top;   dif = max - min;
        if (bn_wexpand(r,max+1) == NULL)                return 0;
        r->top=max;

        ap=a->d;        bp=b->d;        rp=r->d;
        carry=bn_add_words(rp,ap,bp,min);       rp+=min;        
ap+=min;//////////HERE,REMOVE THE NEXT LINE. bp is not referenced again.        
bp+=min;
        if (carry)              {               while (dif)                     
{                       dif--;                  t1 = *(ap++);                   
t2 = (t1+1) & BN_MASK2;                 *(rp++) = t2;                   if (t2) 
                        {                               carry=0;                
                break;                          }                       }       
        if (carry)                      {                       /* carry != 0 
=> dif == 0 */                    *rp = 1;                        r->top++;     
                  }               }       if (dif && rp != ap)            while 
(dif--)                   /* copy remaining words if ap != rp */                
  *(rp++) = *(ap++);      r->neg = 0;     bn_check_top(r);        return 1;     
  }
                                          
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [email protected]

Reply via email to