Created
January 24, 2013 20:13
-
-
Save postwait/4627214 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs b/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| index 3024757..212945d 100644 | |
| --- a/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| +++ b/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| @@ -14,12 +14,6 @@ | |
| #define IVCONST(s, c) newCONSTSUB(s, #c, newSViv((int)(intptr_t)c)); | |
| #define POFF (sizeof ("PRIV_") - 1) | |
| -#define RETPRIVSET(set) \ | |
| - ST(0) = sv_newmortal(); \ | |
| - sv_setref_pv(ST(0), "Sun::Solaris::Privilege::PrivsetPtr", \ | |
| - (void*)(set)); \ | |
| - SvREADONLY_on(SvRV(ST(0))) | |
| - | |
| typedef int sysret; | |
| typedef priv_set_t Sun__Solaris__Privilege__Privset; | |
| @@ -125,11 +119,11 @@ CODE: | |
| if (getppriv(which, RETVAL) != 0) { | |
| priv_freeset(RETVAL); | |
| XSRETURN_UNDEF; | |
| - } else { | |
| - RETPRIVSET(RETVAL); | |
| } | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| setppriv(op, which, set) | |
| @@ -145,9 +139,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_emptyset(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_fillset() | |
| @@ -157,9 +152,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_fillset(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| boolean_t | |
| priv_isemptyset(set) | |
| @@ -198,9 +194,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_intersect(set1, RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_union(set1, set2) | |
| @@ -212,9 +209,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_union(set1, RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_inverse(set1) | |
| @@ -225,9 +223,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_inverse(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| @@ -243,9 +242,10 @@ CODE: | |
| if (RETVAL == NULL) { | |
| XSRETURN_UNDEF; | |
| } | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| @@ -278,9 +278,10 @@ CODE: | |
| if (RETVAL == NULL) { | |
| XSRETURN_UNDEF; | |
| } | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| char * | |
| priv_gettext(priv) | |
| @@ -303,5 +304,6 @@ void | |
| Privilege_DESTROY(ps) | |
| Sun::Solaris::Privilege::Privset *ps; | |
| CODE: | |
| - priv_freeset(ps); | |
| + if (ps != NULL) | |
| + priv_freeset(ps); | |
| diff --git a/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs b/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| index fe747cb..4be8ddc 100644 | |
| --- a/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| +++ b/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| @@ -111,9 +111,10 @@ CODE: | |
| val = ucred_getprivset(uc, which); | |
| if (val == NULL || (RETVAL = dupset(val)) == NULL) | |
| XSRETURN_UNDEF; | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Ucred::Ucred * | |
| getpeerucred(fd) | |
| @@ -122,9 +123,10 @@ CODE: | |
| RETVAL = NULL; | |
| if (getpeerucred(fd, &RETVAL) != 0) | |
| XSRETURN_UNDEF; | |
| - RETUCRED(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| void | |
| ucred_getgroups(uc) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment