char *line;
if (tcp_getline(contact->socptr,delay,&line)>0) {
+ char *res;
- //if a clear text QUIT is received because of deep trouble
- if (strcasecmp(line,"QUIT")!=0) {
- char *res;
-
- res=cnv_getb64(line);
- (void) snprintf(answer,sizeof(answer),"%s",res);
- res=rou_freestr(res);
- }
+ res=cnv_getb64(line);
+ (void) snprintf(answer,sizeof(answer),"%s",res);
+ res=rou_freestr(res);
line=rou_freestr(line);
}
if (strlen(answer)==0)
char *line;
if (tcp_getline(contact->socptr,delay,&line)>0) {
- (void) rou_alert(0,"%s challenge answer=<%s>",OPEP,line);
//if a clear text QUIT is received because of deep trouble
if (strcasecmp(line,"QUIT")!=0) {
char *res;
res=cnv_getb64(line);
(void) snprintf(answer,sizeof(answer),"%s",res);
res=rou_freestr(res);
- (void) rou_alert(0,"JMPDBG Got <%s>",answer);
}
line=rou_freestr(line);
}
case 5 : //comparing answer
if (dig_checkresp(resp,"xxx")==true)
(void) rou_alert(0,"JMPDBG Bingo!");
+ resp=dig_freeresp(resp);
break;
default : //SAFE Guard
proceed=false;
if (*data=='"') {
char *ptr;
- (void) memmove(data,data+1,strlen(data)+1);
+ (void) memmove(data,data+1,strlen(data+1)+1);
while ((ptr=strchr(data,'"'))!=(char *)0) {
if (strlen(data)>strlen(ptr)) {
if (*(ptr-1)=='\\') {
RSPTYP *resp;
resp=(RSPTYP *)0;
+(void) rou_alert(0,"JMPDBG in dig_parseresp <%s>",response);
if ((response!=(char *)0)&&(strlen(response)>0)) {
char *cpy;
char *next;
switch (phase) {
case 0 : { //computing hash HA1
MD5TYP *A1;
+ char strA1[sizeof(MD5TYP)+1];
(void) snprintf(seq,sizeof(seq),"%s:%s:%s",resp->username,resp->realm,secret);
A1=dig_hashmd5((unsigned char *)seq);
+ (void) memset(strA1,'\000',sizeof(strA1));
+ (void) memmove(strA1,(char *)A1,sizeof(MD5TYP));
//algorithm value is "MD5-sess"
- (void) snprintf(seq,sizeof(seq),"%s:%s:%s",
- (char *)A1,resp->nonce,resp->cnonce);
+ (void) snprintf(seq,sizeof(seq),"%s:%s:%s",strA1,resp->nonce,resp->cnonce);
(void) free(A1);
A1=dig_hashmd5((unsigned char *)seq);
HA1=cnv_tohexa((char *)A1,sizeof(MD5TYP));