From d2b2dff2e854a73a8b80eb4b23f19a540ce3afe1 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Tue, 13 Jul 1999 19:52:33 +0000 Subject: dfs parsed string length was being set explicitly to value "6", overwriting the correct length. (This used to be commit 5d1fad53c2bdfef63930e0b9d5cc460c9740066e) --- source3/smbd/trans2.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 381f4ed392..7cfe291c0d 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -2021,6 +2021,8 @@ int reply_findnclose(connection_struct *conn, return(outsize); } +#define UNICODE_DFS + /**************************************************************************** reply to a TRANS2_GET_DFS_REFERRAL ****************************************************************************/ @@ -2054,6 +2056,8 @@ static int call_trans2getdfsreferral(connection_struct *conn, DEBUG(0,("call_trans2getdfsreferral:1\n")); ZERO_STRUCT(rtp); + ZERO_STRUCT(reply); + /* decode the param member of query */ rtp.level=SVAL(params, 0); DEBUGADD(0,("rtp.level:[%d]\n",rtp.level)); @@ -2084,7 +2088,7 @@ static int call_trans2getdfsreferral(connection_struct *conn, DEBUGADD(0,("checking against [%s][%d]\n", list[i].localpath, filename_len)); if( (filename_len==query_file_len) && - (!strncmp(rtp.directory, list[i].localpath, query_file_len)) ) + (!StrnCaseCmp(rtp.directory, list[i].localpath, query_file_len)) ) { bytesreq+=22; /* the referal size */ @@ -2117,14 +2121,14 @@ static int call_trans2getdfsreferral(connection_struct *conn, localstring_offset = pdata + 8 + reply.number_of_referal*22; -/* unicode version */ +#ifdef UNICODE_DFS mangledstring_offset = localstring_offset + 2*(1+strlen(reply.filename)); sharename_offset = mangledstring_offset + 2*(1+strlen(reply.mangledname)); -/*ascii version +#else mangledstring_offset = localstring_offset + (1+strlen(reply.filename)); sharename_offset = mangledstring_offset + (1+strlen(reply.mangledname)); -*/ +#endif referal_offset = pdata + 8; /* right now respond storage server */ @@ -2134,50 +2138,45 @@ static int call_trans2getdfsreferral(connection_struct *conn, reply.server_function=1; /* write the header */ -/* unicode version*/ - /*SSVAL(pheader, 0, reply.path_consumed*2);*/ -/*ascii version - +#ifdef UNICODE_DFS + SSVAL(pheader, 0, reply.path_consumed*2); +#else SSVAL(pheader, 0, reply.path_consumed); -*/ - - SSVAL(pheader, 0, 6); - +#endif SSVAL(pheader, 2, reply.number_of_referal); SIVAL(pheader, 4, reply.server_function); /* write the local path string */ -/* unicode version*/ +#ifdef UNICODE_DFS for(i=0; i