mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
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)
This commit is contained in:
parent
4341be4593
commit
74a07edb50
@ -878,7 +878,7 @@ struct connections_data {
|
||||
int cnum;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
char name[24];
|
||||
char servicename[FSTRING_LEN];
|
||||
char addr[24];
|
||||
char machine[FSTRING_LEN];
|
||||
time_t start;
|
||||
|
@ -5299,15 +5299,22 @@ struct share_params *snum2params_static(int snum)
|
||||
A useful volume label function.
|
||||
********************************************************************/
|
||||
|
||||
char *volume_label(int snum)
|
||||
const char *volume_label(int snum)
|
||||
{
|
||||
char *ret = lp_volume(snum);
|
||||
if (!*ret)
|
||||
return lp_servicename(snum);
|
||||
return (ret);
|
||||
char *ret;
|
||||
const char *label = lp_volume(snum);
|
||||
if (!*label) {
|
||||
label = lp_servicename(snum);
|
||||
}
|
||||
|
||||
/* This returns a 33 byte guarenteed null terminated string. */
|
||||
ret = talloc_strndup(main_loop_talloc_get(), label, 32);
|
||||
if (!ret) {
|
||||
return "";
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Set the server type we will announce as via nmbd.
|
||||
********************************************************************/
|
||||
|
@ -108,13 +108,13 @@ static int count_fn( TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *u
|
||||
|
||||
if (cs->Clear && !process_exists(crec.pid) && (errno == ESRCH)) {
|
||||
DEBUG(2,("pid %s doesn't exist - deleting connections %d [%s]\n",
|
||||
procid_str_static(&crec.pid), crec.cnum, crec.name));
|
||||
procid_str_static(&crec.pid), crec.cnum, crec.servicename));
|
||||
if (tdb_delete(the_tdb, kbuf) != 0)
|
||||
DEBUG(0,("count_fn: tdb_delete failed with error %s\n", tdb_errorstr(tdb) ));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strequal(crec.name, cs->name))
|
||||
if (strequal(crec.servicename, cs->name))
|
||||
cs->curr_connections++;
|
||||
|
||||
return 0;
|
||||
@ -191,8 +191,8 @@ BOOL claim_connection(connection_struct *conn, const char *name,int max_connecti
|
||||
if (conn) {
|
||||
crec.uid = conn->uid;
|
||||
crec.gid = conn->gid;
|
||||
safe_strcpy(crec.name,
|
||||
lp_servicename(SNUM(conn)),sizeof(crec.name)-1);
|
||||
safe_strcpy(crec.servicename,
|
||||
lp_servicename(SNUM(conn)),sizeof(crec.servicename)-1);
|
||||
}
|
||||
crec.start = time(NULL);
|
||||
crec.bcast_msg_flags = msg_flags;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user