btrbk: add mainProgram
[NixPkgs.git] / pkgs / by-name / ns / nss_ldap / crashes.patch
blob48250141e82af99dcf2b61377a7040d1e0273ba5
1 https://bugzilla.redhat.com/show_bug.cgi?id=488857
4 Distinguish between contexts that are somewhat persistent and one-offs
5 which are used to fulfill part of a larger request.
7 diff -up nss_ldap-253/ldap-grp.c nss_ldap-253/ldap-grp.c
8 --- nss_ldap-253/ldap-grp.c 2009-05-08 13:30:43.000000000 -0400
9 +++ nss_ldap-253/ldap-grp.c 2009-05-08 13:34:41.000000000 -0400
10 @@ -857,7 +857,7 @@ ng_chase (const char *dn, ldap_initgroup
11 LA_STRING (a) = dn;
12 LA_TYPE (a) = LA_TYPE_STRING;
14 - if (_nss_ldap_ent_context_init_locked (&ctx) == NULL)
15 + if (_nss_ldap_ent_context_init_internal_locked (&ctx) == NULL)
17 return NSS_UNAVAIL;
19 @@ -930,7 +930,7 @@ ng_chase_backlink (const char ** members
20 LA_STRING_LIST (a) = filteredMembersOf;
21 LA_TYPE (a) = LA_TYPE_STRING_LIST_OR;
23 - if (_nss_ldap_ent_context_init_locked (&ctx) == NULL)
24 + if (_nss_ldap_ent_context_init_internal_locked (&ctx) == NULL)
26 free (filteredMembersOf);
27 return NSS_UNAVAIL;
28 diff -up nss_ldap-253/ldap-netgrp.c nss_ldap-253/ldap-netgrp.c
29 --- nss_ldap-253/ldap-netgrp.c 2009-05-08 13:31:35.000000000 -0400
30 +++ nss_ldap-253/ldap-netgrp.c 2009-05-08 13:33:14.000000000 -0400
31 @@ -691,7 +691,7 @@ do_innetgr_nested (ldap_innetgr_args_t *
32 LA_TYPE (a) = LA_TYPE_STRING;
33 LA_STRING (a) = nested; /* memberNisNetgroup */
35 - if (_nss_ldap_ent_context_init_locked (&ctx) == NULL)
36 + if (_nss_ldap_ent_context_init_internal_locked (&ctx) == NULL)
38 debug ("<== do_innetgr_nested: failed to initialize context");
39 return NSS_UNAVAIL;
40 diff -up nss_ldap-253/ldap-nss.c nss_ldap-253/ldap-nss.c
41 --- nss_ldap-253/ldap-nss.c 2009-05-08 13:27:17.000000000 -0400
42 +++ nss_ldap-253/ldap-nss.c 2009-05-08 14:05:51.000000000 -0400
43 @@ -1961,6 +1961,7 @@ _nss_ldap_ent_context_init_locked (ent_c
44 debug ("<== _nss_ldap_ent_context_init_locked");
45 return NULL;
47 + ctx->ec_internal = 0;
48 *pctx = ctx;
50 else
51 @@ -1990,6 +1991,15 @@ _nss_ldap_ent_context_init_locked (ent_c
53 return ctx;
55 +ent_context_t *
56 +_nss_ldap_ent_context_init_internal_locked (ent_context_t ** pctx)
58 + ent_context_t *ctx;
59 + ctx = _nss_ldap_ent_context_init_locked (pctx);
60 + if (ctx != NULL)
61 + ctx->ec_internal = 1;
62 + return ctx;
66 * Clears a given context; we require the caller
67 @@ -2031,7 +2041,8 @@ _nss_ldap_ent_context_release (ent_conte
69 LS_INIT (ctx->ec_state);
71 - if (_nss_ldap_test_config_flag (NSS_LDAP_FLAGS_CONNECT_POLICY_ONESHOT))
72 + if (!ctx->ec_internal &&
73 + _nss_ldap_test_config_flag (NSS_LDAP_FLAGS_CONNECT_POLICY_ONESHOT))
75 do_close ();
77 diff -up nss_ldap-253/ldap-nss.h nss_ldap-253/ldap-nss.h
78 --- nss_ldap-253/ldap-nss.h 2009-05-08 13:35:47.000000000 -0400
79 +++ nss_ldap-253/ldap-nss.h 2009-05-08 13:52:25.000000000 -0400
80 @@ -560,6 +560,8 @@ struct ent_context
81 ldap_state_t ec_state; /* eg. for services */
82 int ec_msgid; /* message ID */
83 LDAPMessage *ec_res; /* result chain */
84 + int ec_internal; /* this context is just a part of a larger
85 + * query for information */
86 ldap_service_search_descriptor_t *ec_sd; /* current sd */
87 struct berval *ec_cookie; /* cookie for paged searches */
89 @@ -744,6 +746,15 @@ ent_context_t *_nss_ldap_ent_context_ini
90 ent_context_t *_nss_ldap_ent_context_init_locked (ent_context_t **);
93 + * _nss_ldap_ent_context_init_internal_locked() has the same
94 + * behaviour, except it marks the context as one that's being
95 + * used to fetch additional data used in answering a request, i.e.
96 + * that this isn't the "main" context
97 + */
99 +ent_context_t *_nss_ldap_ent_context_init_internal_locked (ent_context_t **);
102 * _nss_ldap_ent_context_release() is used to manually free a context
104 void _nss_ldap_ent_context_release (ent_context_t *);