From bf6e99cceb70ebe39bcb68342a0c8b6610de138a Mon Sep 17 00:00:00 2001 From: Gary Mills Date: Wed, 8 Jul 2009 11:30:42 -0700 Subject: [PATCH] 6383235 smf_maintain_instance() shouldn't fail with SCF_ERROR_DELETED --- usr/src/lib/libscf/common/midlevel.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/usr/src/lib/libscf/common/midlevel.c b/usr/src/lib/libscf/common/midlevel.c index a27854e82b..72795f9553 100644 --- a/usr/src/lib/libscf/common/midlevel.c +++ b/usr/src/lib/libscf/common/midlevel.c @@ -946,10 +946,21 @@ set_inst_action(const char *fmri, const char *action) if (inst != NULL) { if (scf_handle_decode_fmri(h, fmri, NULL, NULL, inst, NULL, - NULL, SCF_DECODE_FMRI_EXACT) == 0) + NULL, SCF_DECODE_FMRI_EXACT) == 0) { ret = set_inst_action_inst(inst, action); - else if (scf_error() == SCF_ERROR_CONSTRAINT_VIOLATED) - (void) scf_set_error(SCF_ERROR_INVALID_ARGUMENT); + if (ret == -1 && scf_error() == SCF_ERROR_DELETED) + (void) scf_set_error(SCF_ERROR_NOT_FOUND); + } else { + switch (scf_error()) { + case SCF_ERROR_CONSTRAINT_VIOLATED: + (void) scf_set_error( + SCF_ERROR_INVALID_ARGUMENT); + break; + case SCF_ERROR_DELETED: + (void) scf_set_error(SCF_ERROR_NOT_FOUND); + break; + } + } scf_instance_destroy(inst); } @@ -1106,6 +1117,8 @@ set_inst_enabled_flags(const char *fmri, int flags, uint8_t desired) out: scf_instance_destroy(inst); scf_handle_destroy(h); + if (ret == -1 && scf_error() == SCF_ERROR_DELETED) + (void) scf_set_error(SCF_ERROR_NOT_FOUND); return (ret); } -- 2.11.4.GIT