head 1.5; access; symbols pkgsrc-2026Q1:1.5.0.2 pkgsrc-2026Q1-base:1.5 pkgsrc-2025Q4:1.4.0.10 pkgsrc-2025Q4-base:1.4 pkgsrc-2025Q3:1.4.0.8 pkgsrc-2025Q3-base:1.4 pkgsrc-2025Q2:1.4.0.6 pkgsrc-2025Q2-base:1.4 pkgsrc-2025Q1:1.4.0.4 pkgsrc-2025Q1-base:1.4 pkgsrc-2024Q4:1.4.0.2 pkgsrc-2024Q4-base:1.4 pkgsrc-2024Q3:1.3.0.16 pkgsrc-2024Q3-base:1.3 pkgsrc-2024Q2:1.3.0.14 pkgsrc-2024Q2-base:1.3 pkgsrc-2024Q1:1.3.0.12 pkgsrc-2024Q1-base:1.3 pkgsrc-2023Q4:1.3.0.10 pkgsrc-2023Q4-base:1.3 pkgsrc-2023Q3:1.3.0.8 pkgsrc-2023Q3-base:1.3 pkgsrc-2023Q2:1.3.0.6 pkgsrc-2023Q2-base:1.3 pkgsrc-2023Q1:1.3.0.4 pkgsrc-2023Q1-base:1.3 pkgsrc-2022Q4:1.3.0.2 pkgsrc-2022Q4-base:1.3 pkgsrc-2022Q3:1.2.0.18 pkgsrc-2022Q3-base:1.2 pkgsrc-2022Q2:1.2.0.16 pkgsrc-2022Q2-base:1.2 pkgsrc-2022Q1:1.2.0.14 pkgsrc-2022Q1-base:1.2 pkgsrc-2021Q4:1.2.0.12 pkgsrc-2021Q4-base:1.2 pkgsrc-2021Q3:1.2.0.10 pkgsrc-2021Q3-base:1.2 pkgsrc-2021Q2:1.2.0.8 pkgsrc-2021Q2-base:1.2 pkgsrc-2021Q1:1.2.0.6 pkgsrc-2021Q1-base:1.2 pkgsrc-2020Q4:1.2.0.4 pkgsrc-2020Q4-base:1.2 pkgsrc-2020Q3:1.2.0.2 pkgsrc-2020Q3-base:1.2 pkgsrc-2020Q2:1.1.0.26 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.6 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.28 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.24 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.22 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.20 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.18 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.16 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.14 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.12 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.10 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.8 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.4 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.2 pkgsrc-2017Q1-base:1.1; locks; strict; comment @// @; 1.5 date 2026.01.07.01.03.59; author gdt; state Exp; branches; next 1.4; commitid yVhtSCB2BR9NGopG; 1.4 date 2024.12.01.13.49.48; author gdt; state Exp; branches; next 1.3; commitid ABpMx07E1a05RNzF; 1.3 date 2022.09.27.01.20.39; author gdt; state Exp; branches; next 1.2; commitid zCqUVVvfPb2uhrVD; 1.2 date 2020.08.25.16.42.21; author gdt; state Exp; branches; next 1.1; commitid AWi8aZUk2bUCTslC; 1.1 date 2017.02.15.00.54.25; author joerg; state Exp; branches; next ; commitid uDg6uwKHAjHN2ZFz; desc @@ 1.5 log @security/zoneminder: Patch mismatches between format specifier and types Variously the issues are time_t, size_t, suseconds_t. With this, there are no format warnings on amd64 or i386. @ text @$NetBSD: patch-src_zm__monitor.cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $ The shmat() error return is (apparently) -1 as a pointer. Some compilers (E.g. clang on MacOS) refuse to consider testing if a pointer is less than zero as legal code. Fix compilation by converting to explicit tests for particular values that might make sense. Avoid type error (suseconds_t is not long). To be addressed upstream once caught up. --- src/zm_monitor.cpp.orig 2026-01-06 13:05:00.000000000 +0000 +++ src/zm_monitor.cpp @@@@ -187,7 +187,7 @@@@ bool Monitor::MonitorLink::connect() { disconnect(); return false; } else if (map_stat.st_size < mem_size) { - Error("Got unexpected memory map file size %ld, expected %jd", static_cast(map_stat.st_size), static_cast(mem_size)); + Error("Got unexpected memory map file size %jd, expected %jd", static_cast(map_stat.st_size), static_cast(mem_size)); disconnect(); return false; } @@@@ -200,7 +200,7 @@@@ bool Monitor::MonitorLink::connect() { } #else // ZM_MEM_MAPPED shm_id = shmget((config.shm_key&0xffff0000)|id, mem_size, 0700); - if (shm_id < 0) { + if (shm_id == (void *)-1) { Debug(3, "Can't shmget link memory: %s", strerror(errno)); connected = false; return false; @@@@ -236,7 +236,7 @@@@ bool Monitor::MonitorLink::disconnect() connected = false; #if ZM_MEM_MAPPED - if (mem_ptr > (void *)0) { + if (mem_ptr != (void *)0 && mem_ptr != (void *)-1) { msync(mem_ptr, mem_size, MS_ASYNC); munmap(mem_ptr, mem_size); } @@@@ -943,41 +943,41 @@@@ bool Monitor::connect() { if (purpose == CAPTURE) { // Allocate the size if (ftruncate(map_fd, mem_size) < 0) { - Error("Can't extend memory map file %s to %jd bytes: %s", mem_file.c_str(), mem_size, strerror(errno)); + Error("Can't extend memory map file %s to %jd bytes: %s", mem_file.c_str(), static_cast(mem_size), strerror(errno)); close(map_fd); map_fd = -1; return false; } } else if (map_stat.st_size == 0) { - Error("Got empty memory map file size %ld, is the zmc process for this monitor running?", map_stat.st_size); + Error("Got empty memory map file size %jd, is the zmc process for this monitor running?", static_cast(map_stat.st_size)); close(map_fd); map_fd = -1; return false; } else { - Error("Got unexpected memory map file size %ld, expected %jd", map_stat.st_size, mem_size); + Error("Got unexpected memory map file size %jd, expected %jd", static_cast(map_stat.st_size), static_cast(mem_size)); close(map_fd); map_fd = -1; return false; } } // end if map_stat.st_size != mem_size - Debug(3, "MMap file size is %ld", map_stat.st_size); + Debug(3, "MMap file size is %jd", static_cast(map_stat.st_size)); #ifdef MAP_LOCKED mem_ptr = (unsigned char *)mmap(nullptr, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_LOCKED, map_fd, 0); if (mem_ptr == MAP_FAILED) { if (errno == EAGAIN) { - Debug(1, "Unable to map file %s (%jd bytes) to locked memory, trying unlocked", mem_file.c_str(), mem_size); + Debug(1, "Unable to map file %s (%jd bytes) to locked memory, trying unlocked", mem_file.c_str(), static_cast(mem_size)); #endif mem_ptr = (unsigned char *)mmap(nullptr, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, 0); - Debug(1, "Mapped file %s (%jd bytes) to unlocked memory", mem_file.c_str(), mem_size); + Debug(1, "Mapped file %s (%jd bytes) to unlocked memory", mem_file.c_str(), static_cast(mem_size)); #ifdef MAP_LOCKED } else { - Error("Unable to map file %s (%jd bytes) to locked memory (%s)", mem_file.c_str(), mem_size, strerror(errno)); + Error("Unable to map file %s (%jd bytes) to locked memory (%s)", mem_file.c_str(), static_cast(mem_size), strerror(errno)); } } #endif if ((mem_ptr == MAP_FAILED) or (mem_ptr == nullptr)) { - Error("Can't map file %s (%jd bytes) to memory: %s(%d)", mem_file.c_str(), mem_size, strerror(errno), errno); + Error("Can't map file %s (%jd bytes) to memory: %s(%d)", mem_file.c_str(), static_cast(mem_size), strerror(errno), errno); close(map_fd); map_fd = -1; mem_ptr = nullptr; @@@@ -2625,8 +2625,8 @@@@ bool Monitor::Decode() { gettimeofday(&now, nullptr); shared_data->last_write_time = now.tv_sec; if (now.tv_sec - packet->timestamp.tv_sec > ZM_WATCH_MAX_DELAY) { - Warning("Decoding is not keeping up. We are %ld seconds behind capture.", - now.tv_sec - packet->timestamp.tv_sec); + Warning("Decoding is not keeping up. We are %jd seconds behind capture.", + static_cast(now.tv_sec - packet->timestamp.tv_sec)); } packetqueue.unlock(packet_lock); @@@@ -2657,7 +2657,7 @@@@ void Monitor::TimestampImage(Image *ts_i found_macro = true; break; case 'f' : - d_ptr += snprintf(d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time.tv_usec/10000); + d_ptr += snprintf(d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time.tv_usec/10000); found_macro = true; break; } @ 1.4 log @security/zoneminder: Update to 1.36.33 Note that this update brings some unresolved issues requiring manual attention, but a) that's just how zoneminder is and b) running 1.36 and dealing with the issues seems better than 1.30 with ancient php and 1.30's issues. The old version is in danger of being removed, so this is better... Significant packaging changes: + 1.36/1.34: - Switch to ffmpeg6 from ffmpeg2 - gc many workarounds that are no longer necessary + 1.32: - Change config to etc/zm from etc, and provide etc/zm/conf.d, because migration from 1.30 writes there. - Rototill hard the cmake build options, and try to document what must be set as path configuration. - Depend on mp4v2. Upstream NEWS: Generally, 1.X.0 is a significant release, and 1.X.Y, Y>0, are bugfixes and minor improvements. + 1.36 (The Memory Remains): Filters Moved event email options from global config to per Filter Added user to run filter as, so that users without access to certain monitors can't just use a filter to access them. Filters now have PreSQL and PostSQL conditions. The first Post SQL condition is ExistsInFileSystem. This can be used to cleanup after a crash instead of using zmaudit. warnings on Filter edit page when you create a filter than can delete archived events. Added Auto Unarchive function UI Updates bootstrap updated to version 3 removed mootools events list now uses bootstrap-table to enable a more modern powerful ui scaled thumbnail on mouseover on events list thumbnails with scaling on console frames view updates to include stats information many popups turned into modals monitor edit is now a full view instead of popup Zone edit is now scaled so high res cameras don't take the entire screen or more. Added Estimated RAM use to Buffers tab in Monitors. Monitor edit no longer form submits/reloads between tabs it just hides/unhides tabs using bootstrap nav. Monitors can now have Latitude/Longitude associated and displayed on a map General New Monitor type VNC for recording desktops better use of scaling when streaming to reduce bandwidth/cpu use dynamic loading of vlc, curl and other libraries that might not be used. Saves ram ONVIF probe can now select a network to scan Sessions now stored in database Event Summary tables reorganized to improve locking performance Clicking on username in header will now list other logged in users if you have SystemView permission. ZoneMinder will now try other Storage Areas if it can't create the event in the assigned area. New Monitor Setting: Decoding Enabled/Disabled /dev/shm mmap use decoupled from image buffering. You should set ImageBufferCount to 3 or larger. mp4v2 deprecated and removed. zma process has been turned into a thread of zmc. Added second ffmpeg input stream for when audio is coming from another source. added RTSP re-streaming hwaccel encoding support for intel vaapi and nvenc Use onmousedown/onmouseup for PTZ start/stop in PTZ controls. Amcrest is the only Protocol that supports it so far. + 1.34 (My Friend Of Misery): This is largely a fixes & polish release. There are a number of bug fixes and security improvements in here. Upgrading from 1.32.3 should be relatively painless although if your Logs table is large it may take some time to update it. Security fixes: We no longer store passwords using mysql's built-in password encryption. We now support a modern JWT access token system Replaced a lot of inline javascript. There were a number of XSS and SQL injection issues fixed. CVE-2019-13072 CVE-2019-6777 Other changes: When adding a new monitor a random colour will be assigned to it instead of red. We now have a handy resolution dropdown to help prevent typos in the width & height fields Support for mysql8 Support for php 7.4 Can now delete database log entries for the logs popup Timezone setting moved from php.ini to Options -> System ffmpeg hwaccel support for h264 decoding Improved recording to mp4 with audio Added ZM_LOG_FFMPEG options which captures ffmpeg debug messages properly which can really help with debugging. Added ability to use zms to stream mjpeg when the video is stored as h265. Most browsers can't play h265 so this allows you to use passthrough mode with an h265 camera and still watch the video. Filters now have a Copy To action which copies the event files to a second storage area We now display additional event information such as that generated by event server object detection + 1.32 - A re-worked web console, compared to the previous 1.30.4 release - record to mp4 container - record audio - support for php 7.x - Arbitrary website as a non-recordable, interactive monitor. - Updated Montage Review - Options-> Paths moved into config files under conf.d folder - Multiple storage paths are supported. See Options -> Storage - The old method of bind mounting the event folder is no longer needed nor recommended - Additional system statistics on the web console - Raspberry pi OMX hardware h264 decoder support - Event thumbnails play video on mouseover - Drag and drop sorting of monitors - Scalability improvements Upstream upgrade notes (tweaked for pkgsrc): - The upgrade scripts will take longer than normal to run, especially if you have many events. - Your previous settings on the Options -> Paths tab have been moved into the file zmcustom.conf which is found under ${PKGSYSCONFDIR}/etc/zm/conf.d - Consider migrating your events folder from the former bind mount method to the new method under Options -> Storage - You should no longer have symbolic links in your webroot folder. This resolves a long standing security issue. - The Apache config file has changed. Hand merge it and review your web setup. @ text @d1 1 a1 1 $NetBSD: patch-src_zm__monitor.cpp,v 1.1 2017/02/15 00:54:25 joerg Exp $ d10 1 a10 1 --- src/zm_monitor.cpp.orig 2023-02-23 21:44:01.000000000 +0000 d12 9 d39 62 a100 1 @@@@ -2649,7 +2649,7 @@@@ void Monitor::TimestampImage(Image *ts_i @ 1.3 log @zoneminder: Update to 1.30.5 Welcome to 2016. MESSAGE content has been moved to an installed README and improved. Prepared in wip by dsainty@@ with some help from gdt@@. Upstream NEWS Onvif discovery is now enabled by default. This features increases build time, but the benefit is auto-discovery of any Onvif compliant camera. Please note that this feature is still experimental. It has not been tested in a large environment or with a large variety of cameras. Using this tool is largely self explanatory, but if you are looking for documentation it can be found on the @@altaroca ’s blog site. As time allows, we will bring the documentation over to our readthedocs site. Volunteers to do this work are welcome. ZoneMinder now has a telemetry deamon which collects information about your machine. This was done to learn how our user base uses ZoneMinder, the most common system size, choice of distro, cpu, memory, and a couple of other things. This will help us focus our efforts on what features get used the most. Since this was written in Perl, you can easily see for yourself what information is being sent. Note that this feature defaults to ON. If this is not what you want, then you can turn it off under Options. In a future release, we plan to include an install wizard, which will prompt the user about this feature. Have you ever wished for the motion detection zones to be live, rather than a static image? Well they are now! Creating or modifying zones works exactly the same as before, but with the live stream running in the background. If you need to freeze the stream, there is a Pause button at the bottom of the window to do just that. A new feature called Montage Review has been added. This can be thought of as a modified version of the original montage feature with features such as "scrubbing" through video. The Montage Review screen has received sufficient testing to be part of the release, but you should still treat this feature as experimental. We expect there to be additional fixes and refinements. @ text @d10 3 a12 4 --- src/zm_monitor.cpp.orig 2019-02-23 04:38:47.000000000 +1300 +++ src/zm_monitor.cpp 2022-01-19 21:56:47.000000000 +1300 @@@@ -160,7 +160,7 @@@@ return( false ); d14 5 a18 5 mem_ptr = (unsigned char *)shmat( shm_id, 0, 0 ); - if ( mem_ptr < 0 ) + if ( mem_ptr == (void *)-1 ) { Debug( 3, "Can't shmat link memory: %s", strerror(errno) ); d20 2 a21 1 @@@@ -194,7 +194,7 @@@@ d25 14 a38 14 - if ( mem_ptr > 0 ) + if ( mem_ptr != 0 && mem_ptr != (void *)-1 ) { msync( mem_ptr, mem_size, MS_ASYNC ); munmap( mem_ptr, mem_size ); @@@@ -3175,7 +3175,7 @@@@ found_macro = true; break; case 'f' : - d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time->tv_usec/10000 ); + d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time->tv_usec/10000 ); found_macro = true; break; } @ 1.2 log @security/zoneminder: Update to 1.29.0 This is the last version that supports autoconf, and this update is only because it's a reasonable benefit/cost tradeoff as an intermediaate step. Tested on netbsd-9/earmv7hf-el. Upstream chanages: many bug fixes and improvements zoneminder API Multiserver limted ONVIF support See more at https://github.com/ZoneMinder/zoneminder/releases/tag/v1.29.0-rc2 and before and after. Note that when updating, one must run zmupdate to modify the db schema. @ text @d3 4 a6 1 \todo Explain mem_ptr change. d10 4 a13 13 --- src/zm_monitor.cpp.orig 2016-02-03 18:40:30.000000000 +0000 +++ src/zm_monitor.cpp @@@@ -160,7 +160,7 @@@@ bool Monitor::MonitorLink::connect() return( false ); } mem_ptr = (unsigned char *)shmat( shm_id, 0, 0 ); - if ( mem_ptr < 0 ) + if ( mem_ptr == (void *)-1 ) { Debug( 3, "Can't shmat link memory: %s", strerror(errno) ); connected = false; @@@@ -558,7 +558,7 @@@@ bool Monitor::connect() { exit( -1 ); d19 20 a38 11 Error( "Can't shmat: %s", strerror(errno)); exit( -1 ); @@@@ -3181,7 +3181,7 @@@@ void Monitor::TimestampImage( Image *ts_ found_macro = true; break; case 'f' : - d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time->tv_usec/10000 ); + d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time->tv_usec/10000 ); found_macro = true; break; } @ 1.1 log @Fix error checks. Bump revision. @ text @d1 1 a1 1 $NetBSD$ d3 5 a7 1 --- src/zm_monitor.cpp.orig 2017-02-15 00:50:20.875646245 +0000 d9 1 a9 1 @@@@ -149,7 +149,7 @@@@ bool Monitor::MonitorLink::connect() d18 1 a18 1 @@@@ -534,7 +534,7 @@@@ bool Monitor::connect() { d27 9 @