mirror of
https://github.com/samba-team/samba.git
synced 2025-09-04 09:44:20 +03:00
Fixes for the fact that UNICODE sizes are no always 2*no of chars when
in multibyte codepages. Fix from Hiroshi MIURA, Samba User Group Japan staff. Jeremy.
This commit is contained in:
@@ -1193,9 +1193,11 @@ static int call_trans2qfsinfo(connection_struct *conn,
|
|||||||
SIVAL(pdata,12,strlen(vname));
|
SIVAL(pdata,12,strlen(vname));
|
||||||
pstrcpy(pdata+18,vname);
|
pstrcpy(pdata+18,vname);
|
||||||
} else {
|
} else {
|
||||||
data_len = 18 + 2*strlen(vname);
|
int vnamelen;
|
||||||
SIVAL(pdata,12,strlen(vname)*2);
|
|
||||||
dos_PutUniCode(pdata+18,unix_to_dos(vname,False),sizeof(pstring), False);
|
vnamelen = dos_PutUniCode(pdata+18, vname, sizeof(pstring), False);
|
||||||
|
data_len = 18 + vnamelen;
|
||||||
|
SIVAL(pdata,12,vnamelen);
|
||||||
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2)|FLAGS2_UNICODE_STRINGS);
|
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2)|FLAGS2_UNICODE_STRINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1466,10 +1468,9 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
|
|||||||
*short_name = '\0';
|
*short_name = '\0';
|
||||||
}
|
}
|
||||||
strupper(short_name);
|
strupper(short_name);
|
||||||
l = strlen(short_name);
|
l = dos_PutUniCode(pdata + 4, short_name, sizeof(pstring), False);
|
||||||
dos_PutUniCode(pdata + 4, unix_to_dos(short_name,False),sizeof(pstring), False);
|
data_size = 4 + l;
|
||||||
data_size = 4 + (2*l);
|
SIVAL(pdata,0,l);
|
||||||
SIVAL(pdata,0,2*l);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1483,7 +1484,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
|
|||||||
if(strequal(".", fname) && (global_client_caps & CAP_UNICODE)) {
|
if(strequal(".", fname) && (global_client_caps & CAP_UNICODE)) {
|
||||||
l = l*2;
|
l = l*2;
|
||||||
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2)|FLAGS2_UNICODE_STRINGS);
|
SSVAL(outbuf,smb_flg2,SVAL(outbuf,smb_flg2)|FLAGS2_UNICODE_STRINGS);
|
||||||
dos_PutUniCode(pdata + 4, unix_to_dos("\\",False),sizeof(pstring), False);
|
dos_PutUniCode(pdata + 4, "\\",sizeof(pstring), False);
|
||||||
} else {
|
} else {
|
||||||
pstrcpy(pdata+4,fname);
|
pstrcpy(pdata+4,fname);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user