diff --git a/libpromises/conversion.c b/libpromises/conversion.c index bf9be81bf3..71c5f87312 100644 --- a/libpromises/conversion.c +++ b/libpromises/conversion.c @@ -957,7 +957,7 @@ static void AddSimpleUidItem(UidList ** uidlist, uid_t uid, char *uidname) ulp->uid = uid; - if (uid == CF_UNKNOWN_OWNER) /* unknown user */ + if (uid == CF_UNKNOWN_OWNER && uidname != NULL) /* unknown user */ { ulp->uidname = xstrdup(uidname); } @@ -1019,7 +1019,7 @@ static void AddSimpleGidItem(GidList ** gidlist, gid_t gid, char *gidname) glp->gid = gid; - if (gid == CF_UNKNOWN_GROUP) /* unknown group */ + if (gid == CF_UNKNOWN_GROUP && gidname != NULL) /* unknown group */ { glp->gidname = xstrdup(gidname); } diff --git a/libpromises/evalfunction.c b/libpromises/evalfunction.c index 0db38909eb..5ab935fd77 100644 --- a/libpromises/evalfunction.c +++ b/libpromises/evalfunction.c @@ -8532,7 +8532,7 @@ struct IsReadableThreadData pthread_cond_t cond; pthread_mutex_t mutex; const char *path; - FnCallResult result; + bool success; }; static void *IsReadableThreadRoutine(void *data) @@ -8549,7 +8549,7 @@ static void *IsReadableThreadRoutine(void *data) GetErrorStrFromCode(ret)); } - thread_data->result = FnReturnContext(false); + thread_data->success = false; // Allow main thread to require lock on pthread_cond_timedwait(3) ret = pthread_mutex_unlock(&thread_data->mutex); @@ -8574,7 +8574,7 @@ static void *IsReadableThreadRoutine(void *data) else { close(fd); - thread_data->result = FnReturnContext(true); + thread_data->success = true; } ret = pthread_cond_signal(&(thread_data->cond)); @@ -8676,13 +8676,13 @@ static FnCallResult FnCallIsReadable(ARG_UNUSED EvalContext *const ctx, return FnFailure(); } - FnCallResult result; + bool success = false; // Wait on thread to finish or timeout ret = ThreadWait(&thread_data.cond, &thread_data.mutex, timeout); switch (ret) { case 0: // Thread finished in time - result = thread_data.result; + success = thread_data.success; break; case ETIMEDOUT: // Thread timed out @@ -8696,8 +8696,6 @@ static FnCallResult FnCallIsReadable(ARG_UNUSED EvalContext *const ctx, Log(LOG_LEVEL_ERR, "Failed to cancel thread"); return FnFailure(); } - - result = FnReturnContext(false); break; default: @@ -8727,7 +8725,7 @@ static FnCallResult FnCallIsReadable(ARG_UNUSED EvalContext *const ctx, Log(LOG_LEVEL_DEBUG, "Thread was canceled"); } - return result; + return FnReturnContext(success); } /*********************************************************************/