[Rpm-maint] [PATCH 1/4] Add file signature to fsm_file_post parameter list

fin at linux.vnet.ibm.com fin at linux.vnet.ibm.com
Tue Oct 7 20:19:15 UTC 2014


From: Fionnuala Gunter <fin at linux.vnet.ibm.com>

The ima plugin instantiates fsm_file_post hook, but needs access to the 
file's signature, so this patch adds a file signature parameter to the 
fsm_file_post parameter list.

Signed-off-by: Fionnuala Gunter <fin at linux.vnet.ibm.com>
---
 lib/fsm.c        | 7 ++++---
 lib/rpmplugin.h  | 3 ++-
 lib/rpmplugins.c | 5 +++--
 lib/rpmplugins.h | 4 +++-
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/fsm.c b/lib/fsm.c
index 7ae4747..e7c2a3b 100644
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -449,7 +449,8 @@ static int fsmMkdirs(rpmfiles files, rpmfs fs, rpmPlugins plugins)
 		}
 
 		/* Run fsm file post hook for all plugins */
-		rpmpluginsCallFsmFilePost(plugins, NULL, dn, mode, op, rc);
+		rpmpluginsCallFsmFilePost(plugins, NULL, dn, mode, op, NULL,
+					  rc);
 
 		if (!rc) {
 		    rpmlog(RPMLOG_DEBUG,
@@ -954,7 +955,7 @@ int rpmPackageFilesInstall(rpmts ts, rpmte te, rpmfiles files,
 
 	/* Run fsm file post hook for all plugins */
 	rpmpluginsCallFsmFilePost(plugins, fi, fpath,
-				  sb.st_mode, action, rc);
+				  sb.st_mode, action, NULL, rc);
 	fpath = _free(fpath);
     }
 
@@ -1034,7 +1035,7 @@ int rpmPackageFilesRemove(rpmts ts, rpmte te, rpmfiles files,
 
 	/* Run fsm file post hook for all plugins */
 	rpmpluginsCallFsmFilePost(plugins, fi, fpath,
-				  sb.st_mode, action, rc);
+				  sb.st_mode, action, NULL, rc);
 
         /* XXX Failure to remove is not (yet) cause for failure. */
         if (!strict_erasures) rc = 0;
diff --git a/lib/rpmplugin.h b/lib/rpmplugin.h
index fd81aec..f755378 100644
--- a/lib/rpmplugin.h
+++ b/lib/rpmplugin.h
@@ -55,7 +55,8 @@ typedef rpmRC (*plugin_fsm_file_pre_func)(rpmPlugin plugin, rpmfi fi,
 					  rpmFsmOp op);
 typedef rpmRC (*plugin_fsm_file_post_func)(rpmPlugin plugin, rpmfi fi,
 					   const char* path, mode_t file_mode,
-					   rpmFsmOp op, int res);
+					   rpmFsmOp op, const char *sig,
+					   int res);
 typedef rpmRC (*plugin_fsm_file_prepare_func)(rpmPlugin plugin, rpmfi fi,
 					      const char* path,
 					      const char *dest,
diff --git a/lib/rpmplugins.c b/lib/rpmplugins.c
index da04c73..bf856f2 100644
--- a/lib/rpmplugins.c
+++ b/lib/rpmplugins.c
@@ -349,7 +349,8 @@ rpmRC rpmpluginsCallFsmFilePre(rpmPlugins plugins, rpmfi fi, const char *path,
 }
 
 rpmRC rpmpluginsCallFsmFilePost(rpmPlugins plugins, rpmfi fi, const char *path,
-                                mode_t file_mode, rpmFsmOp op, int res)
+                                mode_t file_mode, rpmFsmOp op, const char *sig,
+                                int res)
 {
     plugin_fsm_file_post_func hookFunc;
     int i;
@@ -358,7 +359,7 @@ rpmRC rpmpluginsCallFsmFilePost(rpmPlugins plugins, rpmfi fi, const char *path,
     for (i = 0; i < plugins->count; i++) {
 	rpmPlugin plugin = plugins->plugins[i];
 	RPMPLUGINS_SET_HOOK_FUNC(fsm_file_post);
-	if (hookFunc && hookFunc(plugin, fi, path, file_mode, op, res) == RPMRC_FAIL)
+	if (hookFunc && hookFunc(plugin, fi, path, file_mode, op, sig, res) == RPMRC_FAIL)
 	    rc = RPMRC_FAIL;
     }
 
diff --git a/lib/rpmplugins.h b/lib/rpmplugins.h
index ecfa68b..93ab7b9 100644
--- a/lib/rpmplugins.h
+++ b/lib/rpmplugins.h
@@ -144,12 +144,14 @@ rpmRC rpmpluginsCallFsmFilePre(rpmPlugins plugins, rpmfi fi, const char* path,
  * @param path		file object path
  * @param file_mode	file object mode
  * @param op		file operation + associated flags
+ * @param sig		file signature
  * @param res		fsm result code
  * @return		RPMRC_OK on success, RPMRC_FAIL otherwise
  */
 RPM_GNUC_INTERNAL
 rpmRC rpmpluginsCallFsmFilePost(rpmPlugins plugins, rpmfi fi, const char* path,
-                                mode_t file_mode, rpmFsmOp op, int res);
+                                mode_t file_mode, rpmFsmOp op, const char *sig,
+                                int res);
 
 /** \ingroup rpmplugins
  * Call the fsm file prepare plugin hook. Called after setting
-- 
1.9.3



More information about the Rpm-maint mailing list