Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37490977
en ru br
Репозитории ALT

Группа :: Сети/WWW
Пакет: nspluginwrapper

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: plugin-config-time-check.patch
Скачать


diff -up nspluginwrapper-1.3.0/plugin-config-1.9/src/plugin-config.c.time nspluginwrapper-1.3.0/plugin-config-1.9/src/plugin-config.c
--- nspluginwrapper-1.3.0/plugin-config-1.9/src/plugin-config.c.time	2010-06-28 14:44:39.000000000 +0200
+++ nspluginwrapper-1.3.0/plugin-config-1.9/src/plugin-config.c	2010-06-28 14:52:57.000000000 +0200
@@ -400,6 +400,32 @@ int get_link_config(WRAP_PLUGIN *p_plugi
   return(link);
 }
 
+time_t get_plugin_time(char * filename)
+{
+  struct stat filestat;
+
+  int fd = open (filename, O_RDONLY);
+  if (fd < 0)
+    return 0;
+  if(fstat(fd, &filestat))
+    return 0;
+  close (fd);
+  return filestat.st_mtime;
+}
+
+int check_wrapped_time(WRAP_PLUGIN *p_plugin)
+{
+  info("Checking wrapped plugin %s timestamp...", p_plugin->file.name);
+
+  time_t file = get_plugin_time(p_plugin->file.name);
+  time_t wrap = get_plugin_time(p_plugin->file.name_wrapped);
+
+  info("  file = %d, wrap = %d", file, wrap);
+
+  return(file && wrap && file <= wrap);
+}
+
+
 /**********************************************************************************
    Directory processing callback - plugins removing
   *********************************************************************************
@@ -581,7 +607,7 @@ int check_installed_plugin(WRAP_PLUGIN *
   // should be wrapped
   if(plug) {    
     if(wrap_ok && !link_ok) { // is wrapped?
-      return(wrap);
+      ret = wrap;
     } else {
       ret = (wrap_ok && link_ok);
     }
@@ -595,7 +621,12 @@ int check_installed_plugin(WRAP_PLUGIN *
       ret = link_ok;
     }
   }
-  
+ 
+  // Check timestamp of original and wrapped plugin
+  if(ret && wrap && wrap_current) {
+	ret = check_wrapped_time(p_plugin);
+  }
+ 
   if(!ret) {
     info("FAIL: %s",p_plugin->file.name);
   }
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin