RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 04-May-2017 16:54:26 Branch: rpm-5_4 Handle: 2017050414542500 Modified files: (Branch: rpm-5_4) rpm/rpmdb logio.h logio.src rpmlio.c rpmlio.h Log: - caps: add cap_set_file(3) to file ACID. Summary: Revision Changes Path 1.10.4.1 +4 -0 rpm/rpmdb/logio.h 1.10.4.1 +7 -0 rpm/rpmdb/logio.src 1.5.2.2 +26 -0 rpm/rpmdb/rpmlio.c 1.2.4.2 +4 -0 rpm/rpmdb/rpmlio.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmdb/logio.h ============================================================================ $ cvs diff -u -r1.10 -r1.10.4.1 logio.h --- rpm/rpmdb/logio.h 22 Oct 2009 16:37:11 -0000 1.10 +++ rpm/rpmdb/logio.h 4 May 2017 14:54:25 -0000 1.10.4.1 @@ -91,6 +91,10 @@ __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *)); _LOGIO_PROTO(Posttrans); +int logio_Setcap_log + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *)); +_LOGIO_PROTO(Setcap); + #undef _LOGIO_PROTO int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops op); @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/logio.src ============================================================================ $ cvs diff -u -r1.10 -r1.10.4.1 logio.src --- rpm/rpmdb/logio.src 22 Oct 2009 16:37:11 -0000 1.10 +++ rpm/rpmdb/logio.src 4 May 2017 14:54:25 -0000 1.10.4.1 @@ -146,3 +146,10 @@ DBT cmd DBT s DBT script DBT s END + +/* cap_set_file(3) */ +BEGIN Setcap 48 10036 +DBT path DBT s +DBT caps DBT s +END + @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmlio.c ============================================================================ $ cvs diff -u -r1.5.2.1 -r1.5.2.2 rpmlio.c --- rpm/rpmdb/rpmlio.c 17 Aug 2014 14:30:46 -0000 1.5.2.1 +++ rpm/rpmdb/rpmlio.c 4 May 2017 14:54:25 -0000 1.5.2.2 @@ -179,6 +179,32 @@ return rc; } +int rpmlioSetcap(rpmdb rpmdb, const char * fn, const char * caps) +{ + int rc = 0; +# if defined(SUPPORT_FILE_ACID) + extern int logio_Setcap_log + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *)); + DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL); + DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL); + DB_LSN _lsn = {0,0}; + DBT FNdbt = {0}; + DBT CAPSdbt = {0}; + if (!(dbenv && _txn && _enable_syscall_logging)) return 0; + FNdbt.data = (void *)fn; + FNdbt.size = strlen(fn) + 1; /* trailing NUL too */ + if (caps == NULL) caps = ""; /* XXX prevent segfaults */ +/*@-observertrans@*/ + CAPSdbt.data = (void *)caps; +/*@=observertrans@*/ + CAPSdbt.size = strlen(caps) + 1; /* trailing NUL too */ + rc = logio_Setcap_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, &CAPSdbt); +if (_rpmlio_debug) +fprintf(stderr, "<== %s(%s, \"%s\") rc %d\n", __FUNCTION__, fn, caps, rc); +#endif /* SUPPORT_FILE_ACID */ + return rc; +} + int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid) { int rc = 0; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmlio.h ============================================================================ $ cvs diff -u -r1.2.4.1 -r1.2.4.2 rpmlio.h --- rpm/rpmdb/rpmlio.h 28 Sep 2014 19:31:10 -0000 1.2.4.1 +++ rpm/rpmdb/rpmlio.h 4 May 2017 14:54:25 -0000 1.2.4.2 @@ -35,6 +35,10 @@ RPM_GNUC_CONST /*@*/; +int rpmlioSetcap(rpmdb rpmdb, const char * fn, const char * caps) + RPM_GNUC_CONST + /*@*/; + int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid) RPM_GNUC_CONST /*@*/; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org