From 74a07edb505c9f20a93c00da06cb5c997b6b3c8a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 16 Apr 2007 19:10:16 +0000 Subject: r22266: Fix bug #4512 - we were returning a volume label greater than 32 unicode chars. Windows XP doesn't like that :-). Jeremy (This used to be commit e59b5276b56d6963ddd0598bbd1b15426d2d13e8) --- source3/smbd/trans2.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source3/smbd/trans2.c') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 04969784c0..8f1226c666 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -2247,7 +2247,7 @@ static int call_trans2qfsinfo(connection_struct *conn, char *inbuf, char *outbuf uint16 info_level; int data_len, len; SMB_STRUCT_STAT st; - char *vname = volume_label(SNUM(conn)); + const char *vname = volume_label(SNUM(conn)); int snum = SNUM(conn); char *fstype = lp_fstype(SNUM(conn)); int quota_flag = 0; @@ -2368,9 +2368,11 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_dev, (unsi SIVAL(pdata,8,str_checksum(lp_servicename(snum)) ^ (str_checksum(get_local_machine_name())<<16)); + /* Max label len is 32 characters. */ len = srvstr_push(outbuf, pdata+18, vname, -1, STR_UNICODE); SIVAL(pdata,12,len); data_len = 18+len; + DEBUG(5,("call_trans2qfsinfo : SMB_QUERY_FS_VOLUME_INFO namelen = %d, vol=%s serv=%s\n", (int)strlen(vname),vname, lp_servicename(snum))); break; -- cgit