Print this page
patch tsoome-feedback
6659 nvlist_free(NULL) is a no-op


 270                 (void) nvlist_remove(attr, "__fmev_execname", DATA_TYPE_STRING);
 271         }
 272 
 273         if (nvlist_lookup_int32(attr, "__fmev_pid", &i32) == 0) {
 274                 err += nvlist_add_int32(ctxt, FM_FMRI_SW_CTXT_PID, i32);
 275                 (void) nvlist_remove(attr, "__fmev_pid", DATA_TYPE_INT32);
 276         }
 277 
 278         if (!isglobalzone)
 279                 err += nvlist_add_string(ctxt, FM_FMRI_SW_CTXT_ZONE, zonename);
 280 
 281         /* Put it all together */
 282 
 283         err += nvlist_add_uint8(dtcr, FM_VERSION, SW_SCHEME_VERSION0);
 284         err += nvlist_add_string(dtcr, FM_FMRI_SCHEME, FM_FMRI_SCHEME_SW);
 285         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_OBJ, obj);
 286         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_SITE, site);
 287         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_CTXT, ctxt);
 288 
 289 done:
 290         if (obj != NULL)
 291                 nvlist_free(obj);
 292         if (site != NULL)
 293                 nvlist_free(site);
 294         if (ctxt != NULL)
 295                 nvlist_free(ctxt);
 296 
 297         if (err == 0) {
 298                 return (dtcr);
 299         } else {
 300                 nvlist_free(dtcr);
 301                 return (NULL);
 302         }
 303 }
 304 
 305 static int
 306 class_ok(char *class)
 307 {
 308         static const char *approved[] = {
 309                 FM_IREPORT_CLASS ".",
 310                 FM_EREPORT_CLASS "."
 311         };
 312 
 313         int i;
 314 


 539         ea.pp_rawclass = rawclass;
 540         ea.pp_rawsubclass = rawsubclass;
 541         sysevent_get_time(sep, &ea.pp_hrt);
 542         ea.pp_user = user;
 543         ea.pp_priv = priv;
 544         ea.pp_pri = pri;
 545 
 546         fmevt_postprocess(ruleset, dtcr, rawattr, &ea);
 547         nvlist_free(dtcr);
 548 done:
 549         (void) pthread_mutex_lock(&fmevt_lock);
 550 
 551         if (--fmevt_xprt_refcnt == 0 && fmevt_exiting)
 552                 (void) pthread_cond_broadcast(&fmevt_cv);
 553 
 554         (void) pthread_mutex_unlock(&fmevt_lock);
 555 
 556         if (ruleset)
 557                 free(ruleset);
 558 
 559         if (rawattr)
 560                 nvlist_free(rawattr);
 561 
 562         return (0);     /* in all cases consider the event delivered */
 563 }
 564 
 565 void
 566 fmevt_init_inbound(fmd_hdl_t *hdl)
 567 {
 568         char *sidpfx;
 569         zoneid_t zoneid;
 570         int i;
 571 
 572         if (!fmevt_rs_init(hdl))
 573                 fmd_hdl_abort(hdl, "error in fmevt_rs_init\n");
 574 
 575         (void) fmd_stat_create(hdl, FMD_STAT_NOALLOC, sizeof (inbound_stats) /
 576             sizeof (fmd_stat_t), (fmd_stat_t *)&inbound_stats);
 577 
 578         zoneid = getzoneid();
 579         isglobalzone = (zoneid == GLOBAL_ZONEID);




 270                 (void) nvlist_remove(attr, "__fmev_execname", DATA_TYPE_STRING);
 271         }
 272 
 273         if (nvlist_lookup_int32(attr, "__fmev_pid", &i32) == 0) {
 274                 err += nvlist_add_int32(ctxt, FM_FMRI_SW_CTXT_PID, i32);
 275                 (void) nvlist_remove(attr, "__fmev_pid", DATA_TYPE_INT32);
 276         }
 277 
 278         if (!isglobalzone)
 279                 err += nvlist_add_string(ctxt, FM_FMRI_SW_CTXT_ZONE, zonename);
 280 
 281         /* Put it all together */
 282 
 283         err += nvlist_add_uint8(dtcr, FM_VERSION, SW_SCHEME_VERSION0);
 284         err += nvlist_add_string(dtcr, FM_FMRI_SCHEME, FM_FMRI_SCHEME_SW);
 285         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_OBJ, obj);
 286         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_SITE, site);
 287         err += nvlist_add_nvlist(dtcr, FM_FMRI_SW_CTXT, ctxt);
 288 
 289 done:

 290         nvlist_free(obj);

 291         nvlist_free(site);

 292         nvlist_free(ctxt);
 293 
 294         if (err == 0) {
 295                 return (dtcr);
 296         } else {
 297                 nvlist_free(dtcr);
 298                 return (NULL);
 299         }
 300 }
 301 
 302 static int
 303 class_ok(char *class)
 304 {
 305         static const char *approved[] = {
 306                 FM_IREPORT_CLASS ".",
 307                 FM_EREPORT_CLASS "."
 308         };
 309 
 310         int i;
 311 


 536         ea.pp_rawclass = rawclass;
 537         ea.pp_rawsubclass = rawsubclass;
 538         sysevent_get_time(sep, &ea.pp_hrt);
 539         ea.pp_user = user;
 540         ea.pp_priv = priv;
 541         ea.pp_pri = pri;
 542 
 543         fmevt_postprocess(ruleset, dtcr, rawattr, &ea);
 544         nvlist_free(dtcr);
 545 done:
 546         (void) pthread_mutex_lock(&fmevt_lock);
 547 
 548         if (--fmevt_xprt_refcnt == 0 && fmevt_exiting)
 549                 (void) pthread_cond_broadcast(&fmevt_cv);
 550 
 551         (void) pthread_mutex_unlock(&fmevt_lock);
 552 
 553         if (ruleset)
 554                 free(ruleset);
 555 

 556         nvlist_free(rawattr);
 557 
 558         return (0);     /* in all cases consider the event delivered */
 559 }
 560 
 561 void
 562 fmevt_init_inbound(fmd_hdl_t *hdl)
 563 {
 564         char *sidpfx;
 565         zoneid_t zoneid;
 566         int i;
 567 
 568         if (!fmevt_rs_init(hdl))
 569                 fmd_hdl_abort(hdl, "error in fmevt_rs_init\n");
 570 
 571         (void) fmd_stat_create(hdl, FMD_STAT_NOALLOC, sizeof (inbound_stats) /
 572             sizeof (fmd_stat_t), (fmd_stat_t *)&inbound_stats);
 573 
 574         zoneid = getzoneid();
 575         isglobalzone = (zoneid == GLOBAL_ZONEID);