1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

Insure caught the fact that PTRDIFFs were being done between two unrelated

pointers.
Jeremy.
(This used to be commit 15c64199cb29e2fca6ee7353673dbb3f962e0e24)
This commit is contained in:
Jeremy Allison 2001-07-02 00:33:15 +00:00
parent ef6c9d7425
commit 82b76931cb
2 changed files with 17 additions and 5 deletions

View File

@ -243,7 +243,7 @@ int cli_nt_create_full(struct cli_state *cli, char *fname, uint32 DesiredAccess,
p = smb_buf(cli->outbuf);
/* this alignment and termination is critical for netapp filers. Don't change */
p += clistr_align(cli, p, STR_CONVERT);
p += clistr_align_out(cli, p, STR_CONVERT);
len = clistr_push(cli, p, fname, -1, STR_CONVERT);
p += len;
SSVAL(cli->outbuf,smb_ntcreate_NameLength, len);

View File

@ -50,7 +50,7 @@ int clistr_push(struct cli_state *cli, void *dest, const char *src, int dest_len
dest_len = sizeof(pstring);
}
if (clistr_align(cli, dest, flags)) {
if (clistr_align_out(cli, dest, flags)) {
*(char *)dest = 0;
dest = (void *)((char *)dest + 1);
dest_len--;
@ -101,7 +101,7 @@ int clistr_pull(struct cli_state *cli, char *dest, const void *src, int dest_len
dest_len = sizeof(pstring);
}
if (clistr_align(cli, src, flags)) {
if (clistr_align_in(cli, src, flags)) {
src = (const void *)((const char *)src + 1);
if (src_len > 0) src_len--;
}
@ -146,8 +146,20 @@ return an alignment of either 0 or 1
if unicode is not negotiated then return 0
otherwise return 1 if offset is off
****************************************************************************/
int clistr_align(struct cli_state *cli, const void *p, int flags)
static int clistr_align(struct cli_state *cli, char *buf, const void *p, int flags)
{
if ((flags & STR_NOALIGN) || !UNICODE_FLAG(cli, flags)) return 0;
return PTR_DIFF(p, cli->outbuf) & 1;
return PTR_DIFF(p, buf) & 1;
}
int clistr_align_out(struct cli_state *cli, const void *p, int flags)
{
return clistr_align(cli, cli->outbuf, p, flags);
}
int clistr_align_in(struct cli_state *cli, const void *p, int flags)
{
return clistr_align(cli, cli->inbuf, p, flags);
}