1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

More static pstring elimination.

Jeremy.
This commit is contained in:
Jeremy Allison 2007-12-17 18:32:27 -08:00
parent b4dfec09e8
commit 92acc0115d

View File

@ -23,34 +23,92 @@
/****************************************************************************
convert a security permissions into a string
****************************************************************************/
char *get_sec_mask_str(uint32 type)
char *get_sec_mask_str(TALLOC_CTX *ctx, uint32 type)
{
static fstring typestr="";
char *typestr = talloc_strdup(ctx, "");
typestr[0] = 0;
if (!typestr) {
return NULL;
}
if (type & GENERIC_ALL_ACCESS)
fstrcat(typestr, "Generic all access ");
if (type & GENERIC_EXECUTE_ACCESS)
fstrcat(typestr, "Generic execute access ");
if (type & GENERIC_WRITE_ACCESS)
fstrcat(typestr, "Generic write access ");
if (type & GENERIC_READ_ACCESS)
fstrcat(typestr, "Generic read access ");
if (type & MAXIMUM_ALLOWED_ACCESS)
fstrcat(typestr, "MAXIMUM_ALLOWED_ACCESS ");
if (type & SYSTEM_SECURITY_ACCESS)
fstrcat(typestr, "SYSTEM_SECURITY_ACCESS ");
if (type & SYNCHRONIZE_ACCESS)
fstrcat(typestr, "SYNCHRONIZE_ACCESS ");
if (type & WRITE_OWNER_ACCESS)
fstrcat(typestr, "WRITE_OWNER_ACCESS ");
if (type & WRITE_DAC_ACCESS)
fstrcat(typestr, "WRITE_DAC_ACCESS ");
if (type & READ_CONTROL_ACCESS)
fstrcat(typestr, "READ_CONTROL_ACCESS ");
if (type & DELETE_ACCESS)
fstrcat(typestr, "DELETE_ACCESS ");
if (type & GENERIC_ALL_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"Generic all access ");
if (!typestr) {
return NULL;
}
}
if (type & GENERIC_EXECUTE_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"Generic execute access");
if (!typestr) {
return NULL;
}
}
if (type & GENERIC_WRITE_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"Generic write access ");
if (!typestr) {
return NULL;
}
}
if (type & GENERIC_READ_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"Generic read access ");
if (!typestr) {
return NULL;
}
}
if (type & MAXIMUM_ALLOWED_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"MAXIMUM_ALLOWED_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & SYSTEM_SECURITY_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"SYSTEM_SECURITY_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & SYNCHRONIZE_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"SYNCHRONIZE_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & WRITE_OWNER_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"WRITE_OWNER_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & WRITE_DAC_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"WRITE_DAC_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & READ_CONTROL_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"READ_CONTROL_ACCESS ");
if (!typestr) {
return NULL;
}
}
if (type & DELETE_ACCESS) {
typestr = talloc_asprintf_append(typestr,
"DELETE_ACCESS ");
if (!typestr) {
return NULL;
}
}
printf("\t\tSpecific bits: 0x%lx\n", (unsigned long)type&SPECIFIC_RIGHTS_MASK);
@ -62,7 +120,9 @@ char *get_sec_mask_str(uint32 type)
****************************************************************************/
void display_sec_access(SEC_ACCESS *info)
{
printf("\t\tPermissions: 0x%x: %s\n", *info, get_sec_mask_str(*info));
char *mask_str = get_sec_mask_str(NULL, *info);
printf("\t\tPermissions: 0x%x: %s\n", *info, mask_str ? mask_str : "");
TALLOC_FREE(mask_str);
}
/****************************************************************************