The Samba-Bugzilla – Attachment 2746 Details for
Bug 4624
winbind segfaults with idmap_rid
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
idmap_rid segfault fix and bacward compatibility
patch-1.patch (text/plain), 2.12 KB, created by
Simo Sorce
on 2007-06-09 15:41:17 UTC
(
hide
)
Description:
idmap_rid segfault fix and bacward compatibility
Filename:
MIME Type:
Creator:
Simo Sorce
Created:
2007-06-09 15:41:17 UTC
Size:
2.12 KB
patch
obsolete
>Index: nsswitch/idmap_rid.c >=================================================================== >--- nsswitch/idmap_rid.c (revision 23403) >+++ nsswitch/idmap_rid.c (working copy) >@@ -43,6 +43,10 @@ > struct idmap_rid_context *ctx; > char *config_option = NULL; > const char *range; >+ uid_t low_uid = 0; >+ uid_t high_uid = 0; >+ gid_t low_gid = 0; >+ gid_t high_gid = 0; > > if ( (ctx = TALLOC_ZERO_P(dom, struct idmap_rid_context)) == NULL ) { > DEBUG(0, ("Out of memory!\n")); >@@ -65,8 +69,25 @@ > ctx->high_id = 0; > } > >- if ( !ctx->low_id || !ctx->high_id ) { >- DEBUG(1, ("ERROR: Invalid configuration, ID range missing\n")); >+ /* lets see if the range is defined by the old idmap uid/idmap gid */ >+ if (!ctx->low_id && !ctx->high_id) { >+ if (lp_idmap_uid(&low_uid, &high_uid)) { >+ ctx->low_id = low_uid; >+ ctx->high_id = high_uid; >+ } >+ >+ if (lp_idmap_gid(&low_gid, &high_gid)) { >+ if ((ctx->low_id != low_gid) || >+ (ctx->high_id != high_uid)) { >+ DEBUG(1, ("ERROR: idmap uid irange must match idmap gid range\n")); >+ ret = NT_STATUS_UNSUCCESSFUL; >+ goto failed; >+ } >+ } >+ } >+ >+ if (!ctx->low_id || !ctx->high_id) { >+ DEBUG(1, ("ERROR: Invalid configuration, ID range missing or invalid\n")); > ret = NT_STATUS_UNSUCCESSFUL; > goto failed; > } >@@ -75,6 +96,7 @@ > ctx->domain_name = talloc_strdup( ctx, dom->name ); > > dom->private_data = ctx; >+ dom->initialized = True; > > talloc_free(config_option); > return NT_STATUS_OK; >@@ -150,6 +172,14 @@ > NTSTATUS ret; > int i; > >+ /* Initilization my have been deferred because of an error, retry or fail */ >+ if ( ! dom->initialized) { >+ ret = idmap_rid_initialize(dom); >+ if ( ! NT_STATUS_IS_OK(ret)) { >+ return ret; >+ } >+ } >+ > ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context); > > ctx = talloc_new(dom); >@@ -184,6 +214,14 @@ > NTSTATUS ret; > int i; > >+ /* Initilization my have been deferred because of an error, retry or fail */ >+ if ( ! dom->initialized) { >+ ret = idmap_rid_initialize(dom); >+ if ( ! NT_STATUS_IS_OK(ret)) { >+ return ret; >+ } >+ } >+ > ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context); > > ctx = talloc_new(dom);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 4624
:
2696
|
2720
|
2721
| 2746