git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 1/1] mingw: give more details about unsafe directory's ownership

From
Johannes Sixt <j6t@kdbg.org>
Date
Jan 9, 2024, 19:27 UTC
Message-ID
<d1e1a543-ab9c-4b1b-9f1d-3728e791df2e@kdbg.org>
In-Reply-To
<20240108173837.20480-2-soekkle@freenet.de>
Am 08.01.24 um 18:38 schrieb Sören Krecker:
Show 11 quoted lines
> +static BOOL user_sid_to_user_name(PSID sid, LPSTR *str)
> +{
> +	SID_NAME_USE pe_use;
> +	DWORD len_user = 0, len_domain = 0;
> +	BOOL translate_sid_to_user;
> +
> +	/*
> +	 * returns only FALSE, because the string pointers are NULL
> +	 */
> +	LookupAccountSidA(NULL, sid, NULL, &len_user, NULL, &len_domain,
> +			  &pe_use); 

At this point, the function fails, so len_user and len_domain contain the required buffer size (including the trailing NUL).

Show 6 quoted lines
> +	/*
> +	 * Alloc needed space of the strings
> +	 */
> +	ALLOC_ARRAY((*str), (size_t)len_domain + (size_t)len_user); 
> +	translate_sid_to_user = LookupAccountSidA(NULL, sid,
> +	    (*str) + len_domain, &len_user, *str, &len_domain, &pe_use);

At this point, if the function is successful, len_user and len_domain contain the lengths of the names (without the trailing NUL).

> +	if (!translate_sid_to_user)
> +		FREE_AND_NULL(*str);
> +	else
> +		(*str)[len_domain] = '/';

Therefore, this overwrites the NUL after the domain name and so concatenates the two names. Good.

I found this by dumping the values of the variables, because the documentation of LookupAccountSid is not clear about the values that the variables receive in the success case.

> +	return translate_sid_to_user;
> +}
> +
This patch looks good and works for me.
Acked-by: Johannes Sixt <j6t@kdbg.org>
Thank you!
-- Hannes
Previous: Junio C HamanoNext: Junio C Hamano
Message 23 of 28 in “Replace SID with domain/username on Windows”
  1. 0/1 Replace SID with domain/username on WindowsSören Krecker, Dec 29, 2023
  2. 1/1 Replace SID with domain/usernameSören Krecker, Dec 29, 2023
  3. Junio C HamanoJan 2, 2024
  4. Junio C HamanoJan 2, 2024
  5. Eric SunshineDec 31, 2023
  6. 0/1 Replace SID with domain/username on WindowsSören Krecker, Dec 31, 2023
  7. 1/1 Replace SID with domain/usernameSören Krecker, Dec 31, 2023
  8. Junio C HamanoJan 2, 2024
  9. 0/1 Replace SID with domain/username on WindowsSören Krecker, Jan 2, 2024
  10. 1/1 Replace SID with domain/usernameSören Krecker, Jan 2, 2024
  11. Junio C HamanoJan 3, 2024
  12. Matthias AßhauerJan 3, 2024
  13. Junio C HamanoJan 3, 2024
  14. 0/1 Replace SID with domain/username on WindowsSören Krecker, Jan 4, 2024
  15. 1/1 Adds domain/username to error messageSören Krecker, Jan 4, 2024
  16. Junio C HamanoJan 4, 2024
  17. 0/1 mingw: give more details about unsafe directory's ownershipSören Krecker, Jan 6, 2024
  18. 1/1 mingw: give more details about unsafe directory's ownershipSören Krecker, Jan 6, 2024
  19. Johannes SixtJan 7, 2024
  20. 0/1 mingw: give more details about unsafe directory'sSören Krecker, Jan 8, 2024
  21. 1/1 mingw: give more details about unsafe directory's ownershipSören Krecker, Jan 8, 2024
  22. Junio C HamanoJan 8, 2024
  23. Johannes SixtJan 9, 2024
  24. Junio C HamanoJan 9, 2024
  25. Johannes SixtJan 9, 2024
  26. Junio C HamanoJan 9, 2024
  27. Dragan SimicJan 8, 2024
  28. Eric SunshineDec 31, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.