apps/srp.c:605: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] Size: 2500 by call to `srp_create_user`.
Showing all 14 steps of the trace


apps/srp.c:427:2: Call
425.   
426.   #ifndef OPENSSL_NO_ENGINE
427.   	setup_engine(bio_err, engine, 0);
        ^
428.   #endif
429.   

apps/apps.c:1465:1: Parameter `engine->strlen`
  1463.   	}
  1464.   
  1465. > ENGINE *setup_engine(BIO *err, const char *engine, int debug)
  1466.           {
  1467.           ENGINE *e = NULL;

apps/srp.c:605:18: Call
603.   				row[DB_srpsalt] = NULL;
604.   				row[DB_srpinfo] = NULL;
605.   				if (!(gNid = srp_create_user(user,&(row[DB_srpverifier]), &(row[DB_srpsalt]),gNrow?gNrow[DB_srpsalt]:gN,gNrow?gNrow[DB_srpverifier]:NULL, passout, bio_err,verbose)))
                        ^
606.   					{
607.   						BIO_printf(bio_err,"Cannot create srp verifier for user \"%s\", operation abandoned .\n",user);

apps/srp.c:245:1: Parameter `g->strlen`
  243.   	}
  244.   
  245. > static char *srp_create_user(char * user, char **srp_verifier,
  246.   							 char **srp_usersalt,char *g, char *N,
  247.   							 char *passout, BIO *bio, int verbose)

apps/srp.c:259:15: Call
  257.   		{
  258.   		VERBOSE BIO_printf(bio,"Creating\n user=\"%s\"\n g=\"%s\"\n N=\"%s\"\n",user,g,N);
  259.   		if (!(gNid =SRP_create_verifier(user, password, &salt, srp_verifier, N, g)))
                       ^
  260.   			{
  261.   			BIO_printf(bio,"Internal error creating SRP verifier\n");

crypto/srp/srp_vfy.c:526:1: Array declaration
    524.      create a verifier (*salt,*verifier,g and N are in base64)
    525.   */
    526. > char *SRP_create_verifier(const char *user, const char *pass, char **salt,
    527.   						  char **verifier, const char *N, const char *g)
    528.   	{

crypto/srp/srp_vfy.c:547:15: Call
    545.   		if (!(len = t_fromb64(tmp, N))) goto err;
    546.   		N_bn = BN_bin2bn(tmp,len,NULL);
    547.   		if (!(len = t_fromb64(tmp, g))) goto err;
                         ^
    548.   		g_bn = BN_bin2bn(tmp, len, NULL);
    549.   		defgNid = "*";

crypto/srp/srp_vfy.c:88:2: <Offset trace>
86.   		++src;
87.   	size = strlen((const char *)src);
88.   	i = 0;
       ^
89.   	while(i < size)
90.   		{

crypto/srp/srp_vfy.c:88:2: Assignment
      86.   		++src;
      87.   	size = strlen((const char *)src);
      88.   	i = 0;
             ^
      89.   	while(i < size)
      90.   		{

crypto/srp/srp_vfy.c:96:2: Assignment
      94.   		++i;
      95.   		}
      96.   	size = i;
             ^
      97.   	i = size - 1;
      98.   	j = size;

crypto/srp/srp_vfy.c:97:2: Assignment
      95.   		}
      96.   	size = i;
      97.   	i = size - 1;
              ^
      98.   	j = size;
      99.   	while(1)

crypto/srp/srp_vfy.c:79:1: <Length trace>
77.    * Convert a base64 string into raw byte array representation.
78.    */
79. > static int t_fromb64(unsigned char *a, const char *src)
80.   	{
81.   	char *loc;

crypto/srp/srp_vfy.c:79:1: Parameter `*a`
      77.    * Convert a base64 string into raw byte array representation.
      78.    */
      79. > static int t_fromb64(unsigned char *a, const char *src)
      80.   	{
      81.   	char *loc;

crypto/srp/srp_vfy.c:101:10: Array access: Offset: [-1, +oo] Size: 2500 by call to `srp_create_user` 
      99.   	while(1)
      100.   		{
      101.   		a[j] = a[i];
                      ^
      102.   		if(--i < 0) break;
      103.   		a[j] |= (a[i] & 3) << 6;
