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

Reply via email to