DPF((DFA, "Creating new CXTBL handle."));
- ret = (CXHNDL) malloc( sizeof(CXTBLENT) );
+ ret = (CXHNDL) CxMalloc( sizeof(CXTBLENT) );
if(ret<=0) return(NULL);
/**
DPF((DFA,"Copying host"));
if(host && *host) {
if(strlen(host) >= 254) {
- tmp = strdup(host);
+ tmp = (char *)CxMalloc( 255 );
+ strcpy( tmp, host );
tmp[254] = 0;
strcpy(n->host, tmp);
- free(tmp);
+ CxFree(tmp);
+
} else {
strcpy(n->host, host);
}
DPF((DFA,"Copying user"));
if(user && *user) {
if(strlen(user) >= 64) {
- tmp = strdup(user);
+ tmp = (char *)CxMalloc( 65 );
+ strcpy( tmp, user );
tmp[64] = 0;
strcpy(n->user, tmp);
- free(tmp);
+ CxFree(tmp);
} else {
strcpy(n->user, user);
}
DPF((DFA,"Copying pass"));
if(pass && *pass) {
if(strlen(pass) >= 64) {
- tmp = strdup(pass);
+ tmp = (char *)CxMalloc( 65 );
+ strcpy( tmp, pass );
tmp[64] = 0;
strcpy(n->pass, tmp);
- free(tmp);
+ CxFree(tmp);
} else {
strcpy(n->pass, pass);
}
** This was the only entry in the CxTbl.
**/
if( !p->_next && !p->_prev ) {
- free(p);
+ CxFree(p);
g_CxTbl = NULL;
/**
if( g_CxTbl == p ) g_CxTbl = p->_next;
- free( p );
+ CxFree(p);
}
}
DPF((DFA,"g_CxTbl @0x%08x", g_CxTbl));
/**
** CxClGetUser(): Set the username for a specific connection handle.
+ ** [*] FREE the results of this operation!!
**/
char *CxClGetUser( int id ) {
CXHNDL e;
+char *ret;
e = _CxTbEntry( g_CxTbl, id );
if(!e) return(NULL);
- if(e->user) return(strdup(e->user));
- else return(NULL);
+ if(e->user[0]) {
+ ret = (char *)CxMalloc( strlen( e->user ) + 1 );
+ strcpy( ret, e->user );
+ return( ret );
+
+ } else {
+ return(NULL);
+ }
}
/**
**/
char *CxClGetPass( int id ) {
CXHNDL e;
+char *ret;
e = _CxTbEntry( g_CxTbl, id );
if(!e) return(NULL);
- if(e->user) return(strdup(e->pass));
- else return(NULL);
+ if(e->pass) {
+ ret = (char *)CxMalloc( strlen(e->pass) +1 );
+ strcpy(ret, e->pass);
+ return(ret);
+
+ } else {
+ return(NULL);
+ }
}
/**
sprintf(xmit,"PASS %s",passwd);
} else {
tmp = CxClGetPass( id );
- if(!tmp) tmp = strdup("");
-
- xmit = (char *)CxMalloc(strlen(tmp)+6);
- sprintf(xmit,"PASS %s",tmp);
+ if(tmp) {
+ xmit = (char *)CxMalloc(strlen(tmp)+6);
+ sprintf(xmit,"PASS %s",tmp);
+ } else {
+ xmit = (char *)CxMalloc(6);
+ sprintf(xmit, "PASS ");
+ }
}
CxClSend(id, xmit);
CxFree(xmit);
-
- if(tmp) free(tmp);
+ if(tmp) CxFree(tmp);
DPF((DFA,"Validating password"));
rc = CxClRecv(id, buf);