pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/security/zoneminder



Module Name:    pkgsrc
Committed By:   gdt
Date:           Fri Jul 13 02:05:12 UTC 2018

Modified Files:
        pkgsrc/security/zoneminder: Makefile distinfo
        pkgsrc/security/zoneminder/patches: patch-src_zm_logger_cpp
Added Files:
        pkgsrc/security/zoneminder/patches: patch-src_zm__event.cpp
            patch-src_zm__rtp__source.cpp patch-src_zmu.cpp

Log Message:
zoneminder: avoid %ld for time_t (int64_t, not long on arm)

zoneinder uses %ld to print tv.tv_sec, which is of type time_t.  On
NetBSD, that's int64_t, which happens to match long on amd64, but not
on arm, and hence printf often segfaults.  Kludge around this by
casting to long, which should work for about 20 years, by which time a
proper fix should have arrived in a zoneminder release.

Not yet raised upstream, because our package is 1.28.1 and upstream
has released 1.30.4.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 pkgsrc/security/zoneminder/Makefile
cvs rdiff -u -r1.10 -r1.11 pkgsrc/security/zoneminder/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
cvs rdiff -u -r1.3 -r1.4 \
    pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/security/zoneminder/Makefile
diff -u pkgsrc/security/zoneminder/Makefile:1.37 pkgsrc/security/zoneminder/Makefile:1.38
--- pkgsrc/security/zoneminder/Makefile:1.37    Mon Mar 12 11:17:31 2018
+++ pkgsrc/security/zoneminder/Makefile Fri Jul 13 02:05:11 2018
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.37 2018/03/12 11:17:31 wiz Exp $
+# $NetBSD: Makefile,v 1.38 2018/07/13 02:05:11 gdt Exp $
 
 PKGNAME=       ${DISTNAME:S/ZoneMinder-/zoneminder-/}
 DISTNAME=      ZoneMinder-1.28.1
-PKGREVISION=   15
+PKGREVISION=   16
 CATEGORIES=    security
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=ZoneMinder/}
 GITHUB_PROJECT=        ZoneMinder
@@ -127,6 +127,7 @@ DEPENDS+=   ${PHP_PKG_PREFIX}-mysql-[0-9]*
 DEPENDS+=      ${PHP_PKG_PREFIX}-pdo_mysql-[0-9]*:../../databases/php-pdo_mysql
 .endif
 
+# \todo Somehow, this permission setup still fails.
 # This directory contains state, so use OWN_DIRS instead of MAKE_DIRS.
 ZM_CACHE=      ${VARBASE}/cache/zoneminder
 OWN_DIRS_PERMS+=       ${ZM_CACHE} ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 755

Index: pkgsrc/security/zoneminder/distinfo
diff -u pkgsrc/security/zoneminder/distinfo:1.10 pkgsrc/security/zoneminder/distinfo:1.11
--- pkgsrc/security/zoneminder/distinfo:1.10    Sat Sep  9 07:55:31 2017
+++ pkgsrc/security/zoneminder/distinfo Fri Jul 13 02:05:11 2018
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.10 2017/09/09 07:55:31 alnsn Exp $
+$NetBSD: distinfo,v 1.11 2018/07/13 02:05:11 gdt Exp $
 
 SHA1 (ZoneMinder-1.28.1.tar.gz) = 3e173ae1aac529b60d79a5fc668c107f0679d0a2
 RMD160 (ZoneMinder-1.28.1.tar.gz) = b3cc305656cb5b73d4ac0e21fe937c237467cdd1
@@ -9,7 +9,9 @@ SHA1 (patch-configure_ac) = 110a7a10506b
 SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = 841d897662958698a4dfcb95dd5bc43bb5fed568
 SHA1 (patch-scripts_zm_in) = 8f59085bb9293afa7aeb268000c75988e5371c66
 SHA1 (patch-src_Makefile_am) = 0f6571c9d5a3e688544f93d687d266e1b71f0f43
+SHA1 (patch-src_zm__event.cpp) = 2db5a2f85039e711ab6a18af816e0269611fc5f2
 SHA1 (patch-src_zm__monitor.cpp) = dcc3816686a6a7c375d4716d3663b4c922c90439
+SHA1 (patch-src_zm__rtp__source.cpp) = eecca36c18a6611745c49686499a16df177abc7f
 SHA1 (patch-src_zm__sdp.cpp) = ed89bc14ae557281bb43baca9c90b78d801d8eb1
 SHA1 (patch-src_zm__thread.h) = 67dbd1e9c19df63fd120344cc8a36d663a724409
 SHA1 (patch-src_zm__timer.h) = 38080d08b5834e3dae713e81488944887ce5848b
@@ -18,11 +20,12 @@ SHA1 (patch-src_zm__utils.h) = dbda8ba52
 SHA1 (patch-src_zm_comms_cpp) = d40932a3d0ae4375a649f200d973995d56aa71c7
 SHA1 (patch-src_zm_comms_h) = baeb73040ff3ba862f23ad6301de7daba182456e
 SHA1 (patch-src_zm_ffmpeg_camera_cpp) = 6ead5f9afbe984aab14fee337093fd0269c6e9d8
-SHA1 (patch-src_zm_logger_cpp) = 3b0373e9d648d25ef4e3e09429199f654f876ccb
+SHA1 (patch-src_zm_logger_cpp) = 6e0124756ef6fe58fb452651337d622ddff6c4ab
 SHA1 (patch-src_zm_remote_camera_h) = 0d4bd7dae0188df7e463586250ac2ed530230f3d
 SHA1 (patch-src_zm_signal_cpp) = fa11938f55ccd50a1a9e949d6b58dd07773f2690
 SHA1 (patch-src_zm_thread_cpp) = c5f64697c3024c6c382f9ae2c5dbe9c21b529b6e
 SHA1 (patch-src_zmc_cpp) = d1046ddfad3a88bdd30501237834ec9e9fbc4c83
 SHA1 (patch-src_zmf.cpp) = a059b9ae068037c6f68c16dab861ed830dd1c7e2
+SHA1 (patch-src_zmu.cpp) = a95e81285167fc8df77bc059c7b7f09cc36ff922
 SHA1 (patch-web_Makefile.am) = ddb3815fa1b1799658034789302c8d3840f2b894
 SHA1 (patch-web_ajax_stream_php) = e8f811e63bedec03345b74db72c3d8014b3cc7f6

Index: pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.3      Mon Apr 29 21:31:13 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp  Fri Jul 13 02:05:11 2018
@@ -1,11 +1,11 @@
-$NetBSD: patch-src_zm_logger_cpp,v 1.3 2013/04/29 21:31:13 joerg Exp $
+$NetBSD: patch-src_zm_logger_cpp,v 1.4 2018/07/13 02:05:11 gdt Exp $
 
 If the system has syscall() but not SYS_gettid [E.g. NetBSD], don't attempt
 to use SYS_gettid.
 
---- src/zm_logger.cpp.orig     2011-06-28 11:07:35.000000000 +0000
+--- src/zm_logger.cpp.orig     2015-02-05 02:52:37.000000000 +0000
 +++ src/zm_logger.cpp
-@@ -33,6 +33,7 @@
+@@ -31,6 +31,7 @@
  #include <signal.h>
  #include <stdarg.h>
  #include <errno.h>
@@ -13,7 +13,7 @@ to use SYS_gettid.
  
  bool Logger::smInitialised = false;
  Logger *Logger::smInstance = 0;
-@@ -515,7 +516,7 @@ void Logger::logPrint( bool hex, const c
+@@ -527,7 +528,7 @@ void Logger::logPrint( bool hex, const c
      #endif
  
          pid_t tid;
@@ -22,3 +22,12 @@ to use SYS_gettid.
          if ( (tid = syscall(SYS_gettid)) < 0 ) // Thread/Process id
  #endif // HAVE_SYSCALL
          tid = getpid(); // Process id
+@@ -581,7 +582,7 @@ void Logger::logPrint( bool hex, const c
+             char escapedString[(strlen(syslogStart)*2)+1];
+ 
+             mysql_real_escape_string( &mDbConnection, escapedString, syslogStart, strlen(syslogStart) );
+-            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, '%s', '%s', '%s', %d )", timeVal.tv_sec, 
timeVal.tv_usec, mId.c_str(), tid, level, classString, escapedString, file, line );
++            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, '%s', '%s', '%s', %d )", (long) 
timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), tid, level, classString, escapedString, file, line );
+             if ( mysql_query( &mDbConnection, sql ) )
+             {
+                 databaseLevel( NOLOG );

Added files:

Index: pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.1
--- /dev/null   Fri Jul 13 02:05:12 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp  Fri Jul 13 02:05:11 2018
@@ -0,0 +1,57 @@
+$NetBSD: patch-src_zm__event.cpp,v 1.1 2018/07/13 02:05:11 gdt Exp $
+
+zoneminder uses %ld for time_t, which is troublesome on NetBSD mrm and
+presumably i386.  (Note that there are multiple patch files for the
+same issue.)
+
+Not yet sent upstream -- needs update to latest release first, where
+it might be fixed, or the patch might simply need to be rebased.
+Also, this fix is expedient and probably a better fix is appropriate.
+
+--- src/zm_event.cpp.orig      2015-02-05 02:52:37.000000000 +0000
++++ src/zm_event.cpp
+@@ -74,7 +74,7 @@ Event::Event( Monitor *p_monitor, struct
+     static char sql[ZM_SQL_MED_BUFSIZ];
+ 
+     struct tm *stime = localtime( &start_time.tv_sec );
+-    snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s' )", monitor->Id(), 
start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
++    snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s' )", monitor->Id(), 
(long) start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
+     if ( mysql_query( &dbconn, sql ) )
+     {
+         Error( "Can't insert event: %s", mysql_error( &dbconn ) );
+@@ -172,7 +172,7 @@ Event::~Event()
+ 
+         Debug( 1, "Adding closing frame %d to DB", frames );
+         static char sql[ZM_SQL_SML_BUFSIZ];
+-        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %ld ), %s%ld.%02ld )", id, frames, end_time.tv_sec, 
delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
++        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %ld ), %s%ld.%02ld )", id, frames, (long) end_time.tv_sec, 
delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
+         if ( mysql_query( &dbconn, sql ) )
+         {
+             Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
+@@ -185,7 +185,7 @@ Event::~Event()
+     struct DeltaTimeval delta_time;
+     DELTA_TIMEVAL( delta_time, end_time, start_time, DT_PREC_2 );
+ 
+-    snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %ld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d 
where Id = %d", monitor->EventPrefix(), id, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, 
(int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
++    snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %ld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d 
where Id = %d", monitor->EventPrefix(), id, (long) end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, 
(int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
+     if ( mysql_query( &dbconn, sql ) )
+     {
+         Error( "Can't update event: %s", mysql_error( &dbconn ) );
+@@ -520,7 +520,7 @@ void Event::AddFramesInternal( int n_fra
+         DELTA_TIMEVAL( delta_time, *(timestamps[i]), start_time, DT_PREC_2 );
+ 
+         int sql_len = strlen(sql);
+-        snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%ld), %s%ld.%02ld ), ", id, frames, timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
++        snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%ld), %s%ld.%02ld ), ", id, frames, (long) timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, 
delta_time.fsec );
+ 
+         frameCount++;
+     }
+@@ -569,7 +569,7 @@ void Event::AddFrame( Image *image, stru
+ 
+         Debug( 1, "Adding frame %d to DB", frames );
+         static char sql[ZM_SQL_MED_BUFSIZ];
+-        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type, 
timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
++        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type, 
(long) timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
+         if ( mysql_query( &dbconn, sql ) )
+         {
+             Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.1
--- /dev/null   Fri Jul 13 02:05:12 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp    Fri Jul 13 02:05:11 2018
@@ -0,0 +1,24 @@
+$NetBSD: patch-src_zm__rtp__source.cpp,v 1.1 2018/07/13 02:05:11 gdt Exp $
+
+--- src/zm_rtp_source.cpp.orig 2015-02-05 02:52:37.000000000 +0000
++++ src/zm_rtp_source.cpp
+@@ -197,7 +197,7 @@ void RtpSource::updateRtcpData( uint32_t
+ {
+     struct timeval ntpTime = tvMake( ntpTimeSecs, suseconds_t((USEC_PER_SEC*(ntpTimeFrac>>16))/(1<<16)) );
+ 
+-    Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
++    Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", (long) ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
+                                                      
+     if ( mBaseTimeNtp.tv_sec == 0 )
+     {
+@@ -207,8 +207,8 @@ void RtpSource::updateRtcpData( uint32_t
+     }
+     else if ( !mRtpClock )
+     {
+-        Debug( 5, "lastSrNtpTime: %ld.%06ld, rtpTime: %x", mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
+-        Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
++      Debug( 5, "lastSrNtpTime: %ld.%06ld, rtpTime: %x", (long) mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
++        Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", (long) ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
+ 
+         double diffNtpTime = tvDiffSec( mBaseTimeNtp, ntpTime );
+         uint32_t diffRtpTime = rtpTime - mBaseTimeRtp;
Index: pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.1
--- /dev/null   Fri Jul 13 02:05:12 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp        Fri Jul 13 02:05:11 2018
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_zmu.cpp,v 1.1 2018/07/13 02:05:11 gdt Exp $
+
+--- src/zmu.cpp.orig   2015-02-05 02:52:37.000000000 +0000
++++ src/zmu.cpp
+@@ -457,7 +457,7 @@ int main( int argc, char *argv[] )
+                               else
+                               {
+                                       if ( have_output ) printf( "%c", separator );
+-                                      printf( "%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000 );
++                                      printf( "%ld.%02ld", (long) timestamp.tv_sec, timestamp.tv_usec/10000 );
+                                       have_output = true;
+                               }
+                       }
+@@ -729,7 +729,7 @@ int main( int argc, char *argv[] )
+                                                               function,
+                                                               monitor->GetState(),
+                                                               monitor->GetTriggerState(),
+-                                                              tv.tv_sec, tv.tv_usec/10000,
++                                                              (long) tv.tv_sec, tv.tv_usec/10000,
+                                                               monitor->GetLastReadIndex(),
+                                                               monitor->GetLastWriteIndex(),
+                                                               monitor->GetLastEvent(),
+@@ -746,7 +746,7 @@ int main( int argc, char *argv[] )
+                                                       function,
+                                                       0,
+                                                       0,
+-                                                      tv.tv_sec, tv.tv_usec/10000,
++                                                      (long) tv.tv_sec, tv.tv_usec/10000,
+                                                       0,
+                                                       0,
+                                                       0,



Home | Main Index | Thread Index | Old Index