From b3d0ac41db7638bdd3539391c65e6e7bf9fdf7a9 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 14 Oct 2005 12:55:27 +0000 Subject: r11038: r10351@SERNOX: metze | 2005-09-20 16:11:17 +0200 fix namebuf_len, when type is 0x00 metze (This used to be commit 1b2effa01bf16f9575e7e43e037a0797f98426b8) --- source4/wrepl_server/wrepl_in_call.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'source4/wrepl_server') diff --git a/source4/wrepl_server/wrepl_in_call.c b/source4/wrepl_server/wrepl_in_call.c index 6dd1c0fe47..ab86aa209f 100644 --- a/source4/wrepl_server/wrepl_in_call.c +++ b/source4/wrepl_server/wrepl_in_call.c @@ -169,13 +169,19 @@ static NTSTATUS wreplsrv_record2wins_name(TALLOC_CTX *mem_ctx, struct wrepl_wins } namebuf = (uint8_t *)talloc_asprintf(mem_ctx, "%-15s%c%s", - rec->name->name, rec->name->type, + rec->name->name, 'X', (rec->name->scope?rec->name->scope:"")); NT_STATUS_HAVE_NO_MEMORY(namebuf); namebuf_len = strlen((char *)namebuf) + 1; + /* + * we need to set the type here, and use a place-holder in the talloc_asprintf() + * as the type can be 0x00, and then the namebuf_len = strlen(namebuf); would give wrong results + */ + namebuf[15] = rec->name->type; + /* oh wow, what a nasty bug in windows ... */ - if (namebuf[15] == 0x1b && namebuf_len >= 16) { + if (rec->name->type == 0x1b) { namebuf[15] = namebuf[0]; namebuf[0] = 0x1b; } -- cgit