[SSSD] [PATCH 6/6] Fix segfault in GSSAPI reconnect code
Eugene Indenbom
eindenbom at gmail.com
Fri May 7 14:51:47 UTC 2010
On 05/07/2010 06:43 PM, Dmitri Pal wrote:
> Eugene Indenbom wrote:
>
>> One correction (not really important): an error in
>> sdap_account_info_restart(breq) should not put backend to offline:
>>
>>
> If you do this way shouldn't you set the errstr too?
>
>
>
Sure, just could not think out a good text right away.
But the main point is that sdap_mark_offline is in else branch.
>> +static void sdap_account_info_common_done(int ret, struct be_req *breq,
>> + const char *str_on_err)
>> +{
>> + struct sdap_id_ctx *ctx;
>> + int dp_err = DP_ERR_OK;
>> + const char *errstr = NULL;
>> + errno_t err;
>> +
>> + if (ret != EOK) {
>> + dp_err = DP_ERR_FATAL;
>> + errstr = str_on_err;
>> +
>> + if (ret == ETIMEDOUT || ret == EFAULT || ret == EIO) {
>> + ctx = talloc_get_type(breq->be_ctx->bet_info[BET_ID].pvt_bet_data,
>> + struct sdap_id_ctx);
>> + if (sdap_check_gssapi_reconnect(ctx)) {
>> + if (ctx->gsh) {
>> + /* Mark the connection as false so we don't try to use an
>> + * invalid connection by mistake later.
>> + * If the global sdap handler is NULL, it's ok not to do
>> + * anything here. It's always checked by sdap_connected()
>> + * before being used.
>> + */
>> + ctx->gsh->connected = false;
>> + }
>> + err = sdap_account_info_restart(breq);
>> + if (err == EOK) return;
>> --- should be ----
>> + /* reporting restart error */
>> + ret = err;
>> + } else {
>> +
>> + /* Couldn't reconnect, that was our last try
>> + * Go offline now
>> + */
>> + dp_err = DP_ERR_OFFLINE;
>> + sdap_mark_offline(ctx);
>> + }
>> ------------------
>>
>> + }
>> + }
>> +
>> + sdap_handler_done(breq, dp_err, ret, errstr);
>> +}
>>
>>
>> _______________________________________________
>> sssd-devel mailing list
>> sssd-devel at lists.fedorahosted.org
>> https://fedorahosted.org/mailman/listinfo/sssd-devel
>>
>>
>
>
More information about the sssd-devel
mailing list