Print this page
5763 missing va_end() on return from __fini_daemon_priv()

*** 18,27 **** --- 18,28 ---- * * CDDL HEADER END */ /* + * Copyright 2015 Gary Mills * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. */ #pragma weak _getprivimplinfo = getprivimplinfo #pragma weak _priv_addset = priv_addset
*** 569,592 **** __fini_daemon_priv(const char *priv, ...) { priv_set_t *nset; va_list pa; - va_start(pa, priv); - if (priv != NULL) { nset = priv_vlist(pa); if (nset == NULL) return; (void) priv_addset(nset, priv); (void) setppriv(PRIV_OFF, permitted, nset); priv_freeset(nset); } - va_end(pa); - (void) setpflags(__PROC_PROTECT, 0); } /* * The routine __init_suid_priv() is private to Solaris and is --- 570,593 ---- __fini_daemon_priv(const char *priv, ...) { priv_set_t *nset; va_list pa; if (priv != NULL) { + + va_start(pa, priv); nset = priv_vlist(pa); + va_end(pa); + if (nset == NULL) return; (void) priv_addset(nset, priv); (void) setppriv(PRIV_OFF, permitted, nset); priv_freeset(nset); } (void) setpflags(__PROC_PROTECT, 0); } /* * The routine __init_suid_priv() is private to Solaris and is