Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package freeipmi for openSUSE:Factory checked in at 2026-09-16 17:40:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/freeipmi (Old) and /work/SRC/openSUSE:Factory/.freeipmi.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "freeipmi" Wed Sep 16 17:40:31 2026 rev:60 rq:1377984 version:1.6.19 Changes: -------- --- /work/SRC/openSUSE:Factory/freeipmi/freeipmi.changes 2026-06-13 18:47:54.174838897 +0200 +++ /work/SRC/openSUSE:Factory/.freeipmi.new.383539/freeipmi.changes 2026-09-16 17:40:40.213857083 +0200 @@ -1,0 +2,17 @@ +Mon Sep 14 15:19:36 UTC 2026 - Thomas Renninger <[email protected]> + +- Update to version 1.6.19 and fix: + * bsc#1278719 - CVE-2026-85504 + stack-based buffer overflow via malformed Fujitsu SEL long-text responses. + * bsc#1278721 CVE-2026-85506 + Arbitrary code execution via stack-based buffer overflow in ipmi-oem + * bsc#1278722 CVE-2026-85505 + Denial of Service via stack-based buffer over-read in ipmi-oem + * bsc#1278724 CVE-2026-85507 + stack-based buffer overflow in _output_dell_system_info_cmc_info + * bsc#1278726 CVE-2026-85508 + stack-based buffer overflow in _output_dell_system_info_cmc_ipv6_info + * bsc#1278727 CVE-2026-85509 + stack-based buffer overflow when a BMC returns more bytes than requested + +------------------------------------------------------------------- Old: ---- freeipmi-1.6.18.tar.gz freeipmi-1.6.18.tar.gz.sig New: ---- freeipmi-1.6.19.tar.gz freeipmi-1.6.19.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ freeipmi.spec ++++++ --- /var/tmp/diff_new_pack.ARO1GF/_old 2026-09-16 17:40:41.411907142 +0200 +++ /var/tmp/diff_new_pack.ARO1GF/_new 2026-09-16 17:40:41.415907309 +0200 @@ -37,7 +37,7 @@ %{!?_initddir: %global _initddir %{_sysconfdir}/init.d} Name: freeipmi -Version: 1.6.18 +Version: 1.6.19 Release: 0%{release} URL: http://www.gnu.org/software/freeipmi/ Source0: http://ftp.gnu.org/gnu/freeipmi/%{name}-%{srcversion}.tar.gz @@ -46,9 +46,7 @@ Summary: IPMI Service Processor, BMC management tool License: GPL-3.0-or-later Group: System/Management -%if 0%{?suse_version} > 1010 BuildRequires: fdupes -%endif BuildRequires: libgcrypt-devel BuildRequires: libtool BuildRequires: pkg-config ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.ARO1GF/_old 2026-09-16 17:40:41.472909691 +0200 +++ /var/tmp/diff_new_pack.ARO1GF/_new 2026-09-16 17:40:41.477909900 +0200 @@ -1,5 +1,5 @@ -mtime: 1780990399 -commit: c8dcb444c0300c89d66facb8658ad14a185cbd39973d97b1ed2673a37cef1160 +mtime: 1789406028 +commit: 6463353d4ea9f053bddc9ce3887a3a39f0e372c15b584098b2f0ee2d07f15c3f url: https://src.opensuse.org/SystemsManagement/freeipmi revision: main ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-09-14 19:13:48.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ freeipmi-1.6.18.tar.gz -> freeipmi-1.6.19.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ChangeLog new/freeipmi-1.6.19/ChangeLog --- old/freeipmi-1.6.18/ChangeLog 2026-06-02 18:44:48.000000000 +0200 +++ new/freeipmi-1.6.19/ChangeLog 2026-08-27 18:06:20.000000000 +0200 @@ -1,3 +1,182 @@ +2026-08-25 Albert Chu <[email protected]> + + * libfreeipmi/sel/ipmi-sel-string-fujitsu-irmc-common.c + (_ipmi_sel_oem_fujitsu_get_sel_entry_long_text): Reject malformed + Fujitsu SEL long-text responses before copying their data. + +2026-08-25 Albert Chu <[email protected]> + + * libipmidetect/ipmidetect.c (_get_data): Bound daemon hostname parsing + to the destination buffer. + +2026-08-17 Albert Chu <[email protected]> + + * ipmi-oem/ipmi-oem-fujitsu.c (ipmi_oem_fujitsu_get_sel_entry_long_text): + Copy only data_length - offset bytes in the SEL long-text truncate + branch. The branch copied a fixed MAX_DATA_LENGTH - offset bytes from + the response regardless of how much the BMC returned, reading + uninitialized stack past the actual data on a short response. The + truncate branch is taken only when the component would overflow + data_length, so data_length - offset is both the amount needed and + within the received bytes. + +2026-08-18 Albert Chu <[email protected]> + + * ipmi-oem/ipmi-oem-dell.c + (_get_dell_system_info_idrac_info): Bound the accumulation copy against + the destination buffer. The loop copied (len - 1) BMC-supplied bytes + into the 256-byte idrac_info buffer over three iterations without + checking the running offset, so a BMC returning large blocks could + overflow the stack buffer. Reject a copy that would exceed + sizeof (idrac_info) before the memcpy. + + * ipmi-oem/ipmi-oem-dell.c + (_output_dell_system_info_cmc_info): Bound the accumulation copy + against the destination buffer. The loop copied (len - 1) BMC-supplied + bytes into the 256-byte cmc_info buffer over four iterations without + checking the running offset, so a BMC returning large blocks could + overflow the stack buffer. Reject a copy that would exceed + sizeof (cmc_info) before the memcpy. + + * ipmi-oem/ipmi-oem-dell.c + (_output_dell_system_info_cmc_ipv6_info): Bound the accumulation copy + against the destination buffer. The loop copied (len - 1) BMC-supplied + bytes into the 256-byte cmc_ipv6_info buffer over four iterations + without checking the running offset, so a BMC returning large blocks + could overflow the stack buffer. Reject a copy that would exceed + sizeof (cmc_ipv6_info) before the memcpy. + +2026-08-11 Albert Chu <[email protected]> + + * libfreeipmi/fru/ipmi-fru.c (_read_fru_data): Reject a + count_returned greater than count_to_read before the memcpy into + frubuf. The read loop requests at most count_to_read bytes per + iteration, but the BMC-supplied count_returned was only checked for + non-zero and for matching the returned data length, never against + the amount requested. A malicious BMC returning more bytes than + asked could advance num_bytes_read past fru_read_bytes and overflow + the stack frubuf buffer. + +2026-08-25 Albert Chu <[email protected]> + + * ipmi-oem/ipmi-oem-dell.c (ipmi_oem_dell_get_system_info): Read the + one-byte iDRAC web server control value from its returned byte when + checking both the disabled and enabled states. + +2026-08-25 Albert Chu <[email protected]> + + * ipmi-oem/ipmi-oem-dell.c (_output_dell_system_info_cmc_info): Use + the autoconfiguration field when reporting the CMC IPv6 + autoconfiguration state. + +2026-08-25 Albert Chu <[email protected]> + + * libipmidetect/ipmidetect.c (_reset_node_lists, + ipmidetect_load_data): Clear partial node data before trying the next + configured server. + +2026-08-25 Albert Chu <[email protected]> + + * libipmidetect/ipmidetect.c (ipmidetect_load_data): Give an explicit + hostname precedence over the configured default server list. + +2026-08-25 Albert Chu <[email protected]> + + * common/toolcommon/pstdout.c (_pstdout_print_wrapper): Pass the + requested output stream through so finishing a partial stdout line does + not route its newline through stderr. + +2026-08-25 Albert Chu <[email protected]> + + * common/toolcommon/tool-config-file-common.c (config_file_parse): Store + the buffer-output configuration value in the buffer-output field instead + of enabling consolidated output. + +2026-08-25 Albert Chu <[email protected]> + + * common/toolcommon/tool-config-file-common.c (config_file_parse): Parse + utc-offset as an integer so numeric offsets reach their range-checking + callback. + +2026-08-25 Albert Chu <[email protected]> + + * common/toolcommon/tool-config-file-common.c + (config_file_parse): Advance the option-table offset after copying SDR + options so subsequent time options do not overwrite them. + +2026-08-24 Albert Chu <[email protected]> + + * ipmiconsole/ipmiconsole.c (sol_ioloop): Include both console + descriptors in the range passed to select. + +2026-08-24 Albert Chu <[email protected]> + + * libfreeipmi/include/freeipmi/cmds/ + ipmi-rmcpplus-support-and-payload-cmds.h + (IPMI_PAYLOAD_INSTANCE_VALID): Require payload instances to satisfy + both ends of the valid range. + +2026-08-21 Albert Chu <[email protected]> + + * ipmi-sel/ipmi-sel.c (_display_sel_records): Honor --post-clear when + --tail selects the entire SEL. + +2026-08-21 Albert Chu <[email protected]> + + * ipmi-fru/ipmi-fru-output.c (_ipmi_fru_output_dimm_ddr3, + _ipmi_fru_output_dimm_ddr4): Output calculated memory capacities in + megabytes. + +2026-08-21 Albert Chu <[email protected]> + + * ipmi-chassis/ipmi-chassis.c (get_power_on_hours_counter): Apply the + minutes-per-counter scale correctly without overflowing. + +2026-08-19 Albert Chu <[email protected]> + + * ipmi-sel/ipmi-sel-argp.c (_read_date_range): Fix corner case + in which "now" was not acceptable option in date range. + +2026-07-30 Albert Chu <[email protected]> + + * libipmimonitoring/ipmi_monitoring.c (ipmi_monitoring_sel_iterator_first) + (ipmi_monitoring_sel_iterator_next): Report NO_SEL_RECORDS rather than + NO_SENSOR_READINGS. + + * libipmimonitoring/ipmi_monitoring_ipmi_communication.c (_ipmi_2_0_init): + Accept cipher suite id 0 rather than overriding it with the default. + + * libipmimonitoring/ipmi_monitoring.c (ipmi_monitoring_sel_iterator_destroy): + Clear c->sel_records rather than c->sensor_readings. + + * libipmidetect/ipmidetect.c (ipmidetect_load_data): Use each + configured hostname when trying the config-file server list. + +2026-07-29 Albert Chu <[email protected]> + + * ipmi-oem/ipmi-oem-intelnm.c (_parse_suspend_period_time): Parse + the minutes field from minutes_ptr rather than re-parsing the hours + buffer, so minutes are read correctly instead of always equaling + hours. + + * common/pingtool/ping-tool-common.c (_setup): Fix IPv6 "Cannot find + interface" check trapped inside loop. + +2026-07-28 Albert Chu <[email protected]> + + * bmc-watchdog/bmc-watchdog.c (_daemon_setup): Fix arp_response + using gratuitous_arp value in daemon mode. + +2026-08-04 Anonymous <anonymous> + + * man/Makefile.am: Fix preprocessor portability through use of -x + and -o. + +2026-06-07 Fabio Fantoni <[email protected]> + + * man/freeipmi.conf.5.pre.in, man/ipmidetectd.conf.5.pre.in, + man/ipmiseld.conf.5.pre.in: Fix groff warnings in manpages + 2026-06-01 Albert Chu <[email protected]> * ipmi-oem/ipmi-oem-dell.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/NEWS new/freeipmi-1.6.19/NEWS --- old/freeipmi-1.6.18/NEWS 2026-06-02 18:45:12.000000000 +0200 +++ new/freeipmi-1.6.19/NEWS 2026-08-27 18:06:20.000000000 +0200 @@ -1,3 +1,34 @@ +FreeIPMI 1.6.19 - 08/27/26 +-------------------------- +o Fix minor groff warnings in manpages. +o Fix portability of building manpages. +o Fix minor bugs found by code analysis: + - bmc-watchdog: Fix bug with --arp-response command line parsing. + - ipmi/rmcpping: Fix bug with finding an IPv6 interface. + - ipmidetect: fix bug in which hostname configs not used properly + - ipmi-oem intelnm: fix parsing of hours/minutes error + - ipmi-oem: Correct Dell CMC IPv6 autoconfiguration output. + - ipmi-oem: Correct Dell iDRAC web server control output. + - libipmidetect: Isolate partial results between fallback servers. + - libipmidetect: Honor caller-provided hostnames over configured defaults. + - common: Preserve stream state when finishing buffered output. + - common: Fix buffer-output configuration parse issue. + - common: Parse UTC offset configuration as an integer. + - ipmiconsole: Monitor both console descriptors. + - ipmiconsole: Check valid payload instance range correctly. + - ipmi-sel: Honor post-clear after full tail output. + - ipmi-fru: Report DIMM capacities in megabytes. + - ipmi-chassis: Apply the Power-On Hours scale correctly. + - libipmimonitoring: fix mem-leak on SEL iterator + - libipmimonitoring: allow cipher suite 0 in configs + - libipmimonitoring: report NO_SEL_RECORDS instead of + NO_SENSOR_READINGS cut and paste errors in some functions. +o Fix potential stack overflows found by code analysis in ipmi-oem + dell get-system-info command (specifically idrac-info, cmc-info, + cmc-ipv6-info subcommands) and ipmi-oem fujitsu get-sel-entry-long-text. +o Fix potential stack overflow in libfreeipmi also related to Fujitsu + long SEL entries. + FreeIPMI 1.6.18 - 06/02/26 -------------------------- o Support new "altbridging" workaround in ipmi-sensors. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/bmc-watchdog/bmc-watchdog.c new/freeipmi-1.6.19/bmc-watchdog/bmc-watchdog.c --- old/freeipmi-1.6.18/bmc-watchdog/bmc-watchdog.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/bmc-watchdog/bmc-watchdog.c 2026-08-27 18:06:20.000000000 +0200 @@ -1147,7 +1147,7 @@ gratuitous_arp = IPMI_BMC_GENERATED_GRATUITOUS_ARP_DO_NOT_SUSPEND; if (cmd_args.arp_response) - arp_response = cmd_args.gratuitous_arp_arg; + arp_response = cmd_args.arp_response_arg; else arp_response = IPMI_BMC_GENERATED_ARP_RESPONSE_DO_NOT_SUSPEND; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/common/pingtool/ping-tool-common.c new/freeipmi-1.6.19/common/pingtool/ping-tool-common.c --- old/freeipmi-1.6.18/common/pingtool/ping-tool-common.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/common/pingtool/ping-tool-common.c 2026-08-27 18:06:20.000000000 +0200 @@ -495,11 +495,11 @@ break; } } - - if (!ifa) - ipmi_ping_err_exit ("Cannot find interface: %s", pingtool_interface); } + if (!ifa) + ipmi_ping_err_exit ("Cannot find interface: %s", pingtool_interface); + freeifaddrs (ifaddr); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/common/toolcommon/pstdout.c new/freeipmi-1.6.19/common/toolcommon/pstdout.c --- old/freeipmi-1.6.18/common/toolcommon/pstdout.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/common/toolcommon/pstdout.c 2026-08-27 18:06:20.000000000 +0200 @@ -706,7 +706,7 @@ assert(format); va_start(ap, format); - _pstdout_print(pstate, internal_to_pstdout, stderr, format, ap); + _pstdout_print(pstate, internal_to_pstdout, stream, format, ap); va_end(ap); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/common/toolcommon/tool-config-file-common.c new/freeipmi-1.6.19/common/toolcommon/tool-config-file-common.c --- old/freeipmi-1.6.18/common/toolcommon/tool-config-file-common.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/common/toolcommon/tool-config-file-common.c 2026-08-27 18:06:20.000000000 +0200 @@ -1752,7 +1752,7 @@ }, { "utc-offset", - CONFFILE_OPTION_BOOL, + CONFFILE_OPTION_INT, -1, _config_file_utc_offset, 1, @@ -1773,7 +1773,7 @@ 1, 0, &buffer_output_count, - &(common_args->consolidate_output), + &(common_args->buffer_output), 0 }, { @@ -5191,6 +5191,8 @@ sdr_options, options_len); + config_file_options_len += options_len; + options_len = sizeof (time_options)/sizeof (struct conffile_option); if (!(support & CONFIG_FILE_TIME)) _ignore_options (time_options, options_len); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/configure new/freeipmi-1.6.19/configure --- old/freeipmi-1.6.18/configure 2026-06-02 18:49:26.000000000 +0200 +++ new/freeipmi-1.6.19/configure 2026-08-27 19:47:20.000000000 +0200 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac Id: configure.ac,v 1.208 2010-08-06 21:02:29 chu11 Exp . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for freeipmi 1.6.18. +# Generated by GNU Autoconf 2.69 for freeipmi 1.6.19. # # Report bugs to <[email protected]>. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='freeipmi' PACKAGE_TARNAME='freeipmi' -PACKAGE_VERSION='1.6.18' -PACKAGE_STRING='freeipmi 1.6.18' +PACKAGE_VERSION='1.6.19' +PACKAGE_STRING='freeipmi 1.6.19' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1410,7 +1410,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures freeipmi 1.6.18 to adapt to many kinds of systems. +\`configure' configures freeipmi 1.6.19 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1480,7 +1480,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of freeipmi 1.6.18:";; + short | recursive ) echo "Configuration of freeipmi 1.6.19:";; esac cat <<\_ACEOF @@ -1622,7 +1622,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -freeipmi configure 1.6.18 +freeipmi configure 1.6.19 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2091,7 +2091,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by freeipmi $as_me 1.6.18, which was +It was created by freeipmi $as_me 1.6.19, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2447,7 +2447,7 @@ FREEIPMI_PACKAGE_VERSION_MAJOR=1 FREEIPMI_PACKAGE_VERSION_MINOR=6 -FREEIPMI_PACKAGE_VERSION_PATCH=18 +FREEIPMI_PACKAGE_VERSION_PATCH=19 @@ -2973,7 +2973,7 @@ # Define the identity of the package. PACKAGE='freeipmi' - VERSION='1.6.18' + VERSION='1.6.19' cat >>confdefs.h <<_ACEOF @@ -3335,7 +3335,7 @@ # release, then set age to 0. # LIBFREEIPMI_CURRENT=19 -LIBFREEIPMI_REVISION=16 +LIBFREEIPMI_REVISION=17 LIBFREEIPMI_AGE=2 LIBFREEIPMI_VERSION=$LIBFREEIPMI_CURRENT.$LIBFREEIPMI_REVISION.$LIBFREEIPMI_AGE @@ -3357,7 +3357,7 @@ LIBFREEIPMI_VERSION_MAJOR=6 LIBFREEIPMI_VERSION_MINOR=2 -LIBFREEIPMI_VERSION_PATCH=15 +LIBFREEIPMI_VERSION_PATCH=16 @@ -3419,7 +3419,7 @@ # release, then set age to 0. # LIBIPMIMONITORING_CURRENT=6 -LIBIPMIMONITORING_REVISION=10 +LIBIPMIMONITORING_REVISION=11 LIBIPMIMONITORING_AGE=0 LIBIPMIMONITORING_VERSION_INFO=$LIBIPMIMONITORING_CURRENT:$LIBIPMIMONITORING_REVISION:$LIBIPMIMONITORING_AGE @@ -3439,7 +3439,7 @@ LIBIPMIMONITORING_VERSION_MAJOR=1 LIBIPMIMONITORING_VERSION_MINOR=0 -LIBIPMIMONITORING_VERSION_PATCH=11 +LIBIPMIMONITORING_VERSION_PATCH=12 @@ -3460,7 +3460,7 @@ # release, then set age to 0. # LIBIPMIDETECT_CURRENT=0 -LIBIPMIDETECT_REVISION=1 +LIBIPMIDETECT_REVISION=2 LIBIPMIDETECT_AGE=0 LIBIPMIDETECT_VERSION_INFO=$LIBIPMIDETECT_CURRENT:$LIBIPMIDETECT_REVISION:$LIBIPMIDETECT_AGE @@ -3480,7 +3480,7 @@ LIBIPMIDETECT_VERSION_MAJOR=1 LIBIPMIDETECT_VERSION_MINOR=0 -LIBIPMIDETECT_VERSION_PATCH=1 +LIBIPMIDETECT_VERSION_PATCH=2 @@ -16628,7 +16628,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by freeipmi $as_me 1.6.18, which was +This file was extended by freeipmi $as_me 1.6.19, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16694,7 +16694,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -freeipmi config.status 1.6.18 +freeipmi config.status 1.6.19 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/configure.ac new/freeipmi-1.6.19/configure.ac --- old/freeipmi-1.6.18/configure.ac 2026-06-02 18:47:10.000000000 +0200 +++ new/freeipmi-1.6.19/configure.ac 2026-08-27 18:06:20.000000000 +0200 @@ -1,11 +1,11 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([freeipmi],[1.6.18],[[email protected]]) +AC_INIT([freeipmi],[1.6.19],[[email protected]]) AC_REVISION([$Id: configure.ac,v 1.208 2010-08-06 21:02:29 chu11 Exp $]) AC_CONFIG_MACRO_DIR([config]) FREEIPMI_PACKAGE_VERSION_MAJOR=1 FREEIPMI_PACKAGE_VERSION_MINOR=6 -FREEIPMI_PACKAGE_VERSION_PATCH=18 +FREEIPMI_PACKAGE_VERSION_PATCH=19 AC_SUBST(FREEIPMI_PACKAGE_VERSION_MAJOR) AC_SUBST(FREEIPMI_PACKAGE_VERSION_MINOR) @@ -135,7 +135,7 @@ # release, then set age to 0. # LIBFREEIPMI_CURRENT=19 -LIBFREEIPMI_REVISION=16 +LIBFREEIPMI_REVISION=17 LIBFREEIPMI_AGE=2 LIBFREEIPMI_VERSION=$LIBFREEIPMI_CURRENT.$LIBFREEIPMI_REVISION.$LIBFREEIPMI_AGE @@ -157,7 +157,7 @@ LIBFREEIPMI_VERSION_MAJOR=6 LIBFREEIPMI_VERSION_MINOR=2 -LIBFREEIPMI_VERSION_PATCH=15 +LIBFREEIPMI_VERSION_PATCH=16 AC_SUBST(LIBFREEIPMI_VERSION_MAJOR) AC_SUBST(LIBFREEIPMI_VERSION_MINOR) @@ -219,7 +219,7 @@ # release, then set age to 0. # LIBIPMIMONITORING_CURRENT=6 -LIBIPMIMONITORING_REVISION=10 +LIBIPMIMONITORING_REVISION=11 LIBIPMIMONITORING_AGE=0 LIBIPMIMONITORING_VERSION_INFO=$LIBIPMIMONITORING_CURRENT:$LIBIPMIMONITORING_REVISION:$LIBIPMIMONITORING_AGE AC_SUBST([LIBIPMIMONITORING_VERSION_INFO]) @@ -239,7 +239,7 @@ LIBIPMIMONITORING_VERSION_MAJOR=1 LIBIPMIMONITORING_VERSION_MINOR=0 -LIBIPMIMONITORING_VERSION_PATCH=11 +LIBIPMIMONITORING_VERSION_PATCH=12 AC_SUBST(LIBIPMIMONITORING_VERSION_MAJOR) AC_SUBST(LIBIPMIMONITORING_VERSION_MINOR) @@ -260,7 +260,7 @@ # release, then set age to 0. # LIBIPMIDETECT_CURRENT=0 -LIBIPMIDETECT_REVISION=1 +LIBIPMIDETECT_REVISION=2 LIBIPMIDETECT_AGE=0 LIBIPMIDETECT_VERSION_INFO=$LIBIPMIDETECT_CURRENT:$LIBIPMIDETECT_REVISION:$LIBIPMIDETECT_AGE AC_SUBST([LIBIPMIDETECT_VERSION_INFO]) @@ -280,7 +280,7 @@ LIBIPMIDETECT_VERSION_MAJOR=1 LIBIPMIDETECT_VERSION_MINOR=0 -LIBIPMIDETECT_VERSION_PATCH=1 +LIBIPMIDETECT_VERSION_PATCH=2 AC_SUBST(LIBIPMIDETECT_VERSION_MAJOR) AC_SUBST(LIBIPMIDETECT_VERSION_MINOR) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/doc/freeipmi-faq.info new/freeipmi-1.6.19/doc/freeipmi-faq.info --- old/freeipmi-1.6.18/doc/freeipmi-faq.info 2026-06-02 18:50:44.000000000 +0200 +++ new/freeipmi-1.6.19/doc/freeipmi-faq.info 2026-08-27 18:08:27.000000000 +0200 @@ -1,8 +1,8 @@ This is freeipmi-faq.info, produced by makeinfo version 6.5 from freeipmi-faq.texi. -This manual is for FreeIPMI (version 1.6.18, 27 January 2024). -Copyright (C) 2006-2012 FreeIPMI Core Team +This manual is for FreeIPMI (version 1.6.19, 12 August 2026). Copyright +(C) 2006-2012 FreeIPMI Core Team Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -21,8 +21,8 @@ Frequently Asked Questions on *FreeIPMI* - This edition of the documentation was last updated on June 2, 2026 -for release 1.6.18 of the FreeIPMI. + This edition of the documentation was last updated on August 27, 2026 +for release 1.6.19 of the FreeIPMI. * Menu: @@ -1028,33 +1028,33 @@ Tag Table: Node: Top690 -Node: What is IPMI?2297 -Node: What is FreeIPMI?3439 -Node: How did FreeIPMI start?3972 -Node: What operating systems does FreeIPMI run on?5337 -Node: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil6089 -Node: What is special about FreeIPMI?6894 -Node: Does my system support IPMI?13951 -Node: How do I compile FreeIPMI?15944 -Node: libgcrypt requirement16305 -Node: x86-64 Compilation16944 -Node: Installing FreeIPMI on FreeBSD17628 -Node: What are some IPMI terminology or acronyms I should be aware of?18268 -Node: What setup is needed for FreeIPMI to communicate over LAN?21294 -Node: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?21886 -Node: Do I need to install or configure a driver to perform IPMI inband?23790 -Node: SSIF Driver Configuration25503 -Node: How do you setup Powerman with ipmipower?27099 -Node: How do you setup Conman with ipmiconsole or libipmiconsole?30389 -Node: How do you setup Conserver with libipmiconsole?32368 -Node: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?33354 -Node: Why are times reported by FreeIPMI tools wrong?33995 -Node: Why is the IPMI kernel driver faster than the KCS driver?34981 -Node: Why is the output from FreeIPMI different than another software?35981 -Node: Why are there so many IPMI compliance bugs?41376 -Node: How do I get around an IPMI compliance bug on my motherboard?42474 -Node: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?43287 -Node: How do I program with the FreeIPMI libraries?46413 -Node: Where can I get additional help or support?47756 +Node: What is IPMI?2300 +Node: What is FreeIPMI?3442 +Node: How did FreeIPMI start?3975 +Node: What operating systems does FreeIPMI run on?5340 +Node: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil6092 +Node: What is special about FreeIPMI?6897 +Node: Does my system support IPMI?13954 +Node: How do I compile FreeIPMI?15947 +Node: libgcrypt requirement16308 +Node: x86-64 Compilation16947 +Node: Installing FreeIPMI on FreeBSD17631 +Node: What are some IPMI terminology or acronyms I should be aware of?18271 +Node: What setup is needed for FreeIPMI to communicate over LAN?21297 +Node: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?21889 +Node: Do I need to install or configure a driver to perform IPMI inband?23793 +Node: SSIF Driver Configuration25506 +Node: How do you setup Powerman with ipmipower?27102 +Node: How do you setup Conman with ipmiconsole or libipmiconsole?30392 +Node: How do you setup Conserver with libipmiconsole?32371 +Node: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?33357 +Node: Why are times reported by FreeIPMI tools wrong?33998 +Node: Why is the IPMI kernel driver faster than the KCS driver?34984 +Node: Why is the output from FreeIPMI different than another software?35984 +Node: Why are there so many IPMI compliance bugs?41379 +Node: How do I get around an IPMI compliance bug on my motherboard?42477 +Node: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?43290 +Node: How do I program with the FreeIPMI libraries?46416 +Node: Where can I get additional help or support?47759 End Tag Table diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/doc/stamp-vti new/freeipmi-1.6.19/doc/stamp-vti --- old/freeipmi-1.6.18/doc/stamp-vti 2026-06-02 18:50:36.000000000 +0200 +++ new/freeipmi-1.6.19/doc/stamp-vti 2026-08-27 19:47:56.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 27 January 2024 -@set UPDATED-MONTH January 2024 -@set EDITION 1.6.18 -@set VERSION 1.6.18 +@set UPDATED 12 August 2026 +@set UPDATED-MONTH August 2026 +@set EDITION 1.6.19 +@set VERSION 1.6.19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/doc/version-faq.texi new/freeipmi-1.6.19/doc/version-faq.texi --- old/freeipmi-1.6.18/doc/version-faq.texi 2026-06-02 18:50:36.000000000 +0200 +++ new/freeipmi-1.6.19/doc/version-faq.texi 2026-08-27 18:08:27.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 27 January 2024 -@set UPDATED-MONTH January 2024 -@set EDITION 1.6.18 -@set VERSION 1.6.18 +@set UPDATED 12 August 2026 +@set UPDATED-MONTH August 2026 +@set EDITION 1.6.19 +@set VERSION 1.6.19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/freeipmi.spec new/freeipmi-1.6.19/freeipmi.spec --- old/freeipmi-1.6.18/freeipmi.spec 2026-06-02 18:49:34.000000000 +0200 +++ new/freeipmi-1.6.19/freeipmi.spec 2026-08-27 19:47:27.000000000 +0200 @@ -3,7 +3,7 @@ # %define name freeipmi -%define version 1.6.18 +%define version 1.6.19 %if %{?_with_debug:1}%{!?_with_debug:0} %define release 1.debug%{?dist} %else @@ -573,7 +573,7 @@ - Obsolete old subpackage freeipmi-ipmimonitoring. * Tue Dec 18 2007 Albert Chu <[email protected]> 0.6.0 -- Use %{version} instead of 1.6.18 for substitution in paths. +- Use %{version} instead of 1.6.19 for substitution in paths. * Fri Dec 14 2007 Albert Chu <[email protected]> 0.6.0 - Update packaging for libfreeipmi reorganization diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-chassis/ipmi-chassis.c new/freeipmi-1.6.19/ipmi-chassis/ipmi-chassis.c --- old/freeipmi-1.6.18/ipmi-chassis/ipmi-chassis.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-chassis/ipmi-chassis.c 2026-08-27 18:06:20.000000000 +0200 @@ -26,6 +26,7 @@ #include <string.h> #endif /* STDC_HEADERS */ #include <assert.h> +#include <inttypes.h> #include <freeipmi/freeipmi.h> @@ -941,8 +942,9 @@ { fiid_obj_t obj_cmd_rs = NULL; uint64_t val = 0; + uint64_t total_minutes, hrs, min; uint8_t minutes_per_counter; - uint32_t counter_reading, min, hrs; + uint32_t counter_reading; int rv = -1; if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_get_power_on_hours_counter_rs))) @@ -985,14 +987,14 @@ counter_reading = val; - min = counter_reading / minutes_per_counter; + total_minutes = (uint64_t)counter_reading * minutes_per_counter; - hrs = min / 60; + hrs = total_minutes / 60; - min = min % 60; + min = total_minutes % 60; pstdout_printf (state_data->pstate, - "Power on hours : %u Hours %u Minutes\n", + "Power on hours : %" PRIu64 " Hours %" PRIu64 " Minutes\n", hrs, min); rv = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-fru/ipmi-fru-output.c new/freeipmi-1.6.19/ipmi-fru/ipmi-fru-output.c --- old/freeipmi-1.6.18/ipmi-fru/ipmi-fru-output.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-fru/ipmi-fru-output.c 2026-08-27 18:06:20.000000000 +0200 @@ -1367,31 +1367,31 @@ total_sdram_capacity_str = "1 Gb"; total_sdram_capacity_val = 1024; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_2_GB: total_sdram_capacity_str = "2 Gb"; total_sdram_capacity_val = 2048; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_4_GB: total_sdram_capacity_str = "4 Gb"; total_sdram_capacity_val = 4096; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_8_GB: total_sdram_capacity_str = "8 Gb"; total_sdram_capacity_val = 8192; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_16_GB: total_sdram_capacity_str = "16 Gb"; total_sdram_capacity_val = 16384; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; default: total_sdram_capacity_str = "Unknown"; @@ -2025,37 +2025,37 @@ total_sdram_capacity_str = "1 Gb"; total_sdram_capacity_val = 1024; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_2_GB: total_sdram_capacity_str = "2 Gb"; total_sdram_capacity_val = 2048; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_4_GB: total_sdram_capacity_str = "4 Gb"; total_sdram_capacity_val = 4096; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_8_GB: total_sdram_capacity_str = "8 Gb"; total_sdram_capacity_val = 8192; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_16_GB: total_sdram_capacity_str = "16 Gb"; total_sdram_capacity_val = 16384; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; case IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_32_GB: total_sdram_capacity_str = "32 Gb"; total_sdram_capacity_val = 32768; total_sdram_capacity_valid = 1; - total_memory_capacity_units_str = "GB"; + total_memory_capacity_units_str = "MB"; break; default: total_sdram_capacity_str = "Unknown"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-dell.c new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-dell.c --- old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-dell.c 2026-06-02 18:44:48.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-dell.c 2026-08-27 18:06:20.000000000 +0200 @@ -595,6 +595,15 @@ goto cleanup; } + if ((idrac_info_len + (len - 1)) > sizeof (idrac_info)) + { + pstdout_fprintf (state_data->pstate, + stderr, + "ipmi_cmd_get_system_info_parameters: invalid buffer length returned: %d\n", + len); + goto cleanup; + } + memcpy (&idrac_info[idrac_info_len], configuration_parameter_data + 1, /* remove set selector */ len - 1); @@ -937,6 +946,15 @@ goto cleanup; } + if ((cmc_info_len + (len - 1)) > sizeof (cmc_info)) + { + pstdout_fprintf (state_data->pstate, + stderr, + "ipmi_cmd_get_system_info_parameters: invalid buffer length returned: %d\n", + len); + goto cleanup; + } + memcpy (&cmc_info[cmc_info_len], configuration_parameter_data + 1, /* remove set selector */ len - 1); @@ -1220,6 +1238,15 @@ goto cleanup; } + if ((cmc_ipv6_info_len + (len - 1)) > sizeof (cmc_ipv6_info)) + { + pstdout_fprintf (state_data->pstate, + stderr, + "ipmi_cmd_get_system_info_parameters: invalid buffer length returned: %d\n", + len); + goto cleanup; + } + memcpy (&cmc_ipv6_info[cmc_ipv6_info_len], configuration_parameter_data + 1, /* remove set selector */ len - 1); @@ -1260,7 +1287,7 @@ pstdout_printf (state_data->pstate, "Autoconfiguration : %s\n", - ipv6_status == IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_ENABLED ? "Enabled" : "Disabled"); + autoconfiguration == IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_ENABLED ? "Enabled" : "Disabled"); memset (ipv6_str_buf, '\0', IPMI_OEM_STR_BUFLEN + 1); @@ -2225,7 +2252,7 @@ if (bytes[0] == IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_WEB_GUI_SERVER_CONTROL_DISABLED) idrac_web_gui_server_control_str = "Disabled"; - else if (bytes[1] == IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_WEB_GUI_SERVER_CONTROL_ENABLED) + else if (bytes[0] == IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_WEB_GUI_SERVER_CONTROL_ENABLED) idrac_web_gui_server_control_str = "Enabled"; else idrac_web_gui_server_control_str = "Unknown"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-fujitsu.c new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-fujitsu.c --- old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-fujitsu.c 2026-06-02 18:44:48.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-fujitsu.c 2026-08-27 18:06:20.000000000 +0200 @@ -1400,7 +1400,7 @@ { memcpy (data_buf + offset, &bytes_rs[16], - IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_DATA_LENGTH - offset); + data_length - offset); offset = data_length; } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-intelnm.c new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-intelnm.c --- old/freeipmi-1.6.18/ipmi-oem/ipmi-oem-intelnm.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-oem/ipmi-oem-intelnm.c 2026-08-27 18:06:20.000000000 +0200 @@ -4694,7 +4694,7 @@ } errno = 0; - minutes = strtoul (buf, &ptr, 10); + minutes = strtoul (minutes_ptr, &ptr, 10); if (errno || ptr[0] != '\0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-sel/ipmi-sel-argp.c new/freeipmi-1.6.19/ipmi-sel/ipmi-sel-argp.c --- old/freeipmi-1.6.18/ipmi-sel/ipmi-sel-argp.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-sel/ipmi-sel-argp.c 2026-08-27 18:06:20.000000000 +0200 @@ -328,28 +328,64 @@ split_ptr = strchr (range_str, '-'); else if (dash_count == 3) { - /* one date input w/ dashes, one with slashes */ + /* one date input w/ dashes, one with slashes or "now" */ char *ptr1, *ptr2; ptr1 = strchr (range_str, '/'); ptr2 = strchr (range_str, '-'); - /* determine if MM/DD/YYYY is first or second date listed */ - if (ptr1 < ptr2) - split_ptr = strchr (range_str, '-'); + if (!ptr1) + { + /* if no slashes, one of the dates should be "now". + */ + char *ptr3 = strstr (range_str, "now"); + if (!ptr3) + { + fprintf (stderr, "invalid range input\n"); + exit (EXIT_FAILURE); + } + else + { + /* determine if "now" is first or second date listed. + * Note that "now" as the first part of the range makes + * no sense, but users are allowed to do it. Will + * likely be caught as error later. + */ + if (ptr3 < ptr2) + split_ptr = strchr (range_str, '-'); + else + { + ptr = range_str; + ptr = strchr (ptr, '-'); + ptr++; + ptr = strchr (ptr, '-'); + ptr++; + split_ptr = strchr (ptr, '-'); + } + } + } else { - ptr = range_str; - ptr = strchr (ptr, '-'); - ptr++; - ptr = strchr (ptr, '-'); - ptr++; - split_ptr = strchr (ptr, '-'); + /* determine if MM/DD/YYYY is first or second date listed */ + if (ptr1 < ptr2) + split_ptr = strchr (range_str, '-'); + else + { + ptr = range_str; + ptr = strchr (ptr, '-'); + ptr++; + ptr = strchr (ptr, '-'); + ptr++; + split_ptr = strchr (ptr, '-'); + } } } else if (dash_count == 5) { - /* find the middle dash */ + /* presumably two dates specified w/ dashes with one dash in the middle. + * + * find the middle dash + */ ptr = range_str; ptr = strchr (ptr, '-'); ptr++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmi-sel/ipmi-sel.c new/freeipmi-1.6.19/ipmi-sel/ipmi-sel.c --- old/freeipmi-1.6.18/ipmi-sel/ipmi-sel.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmi-sel/ipmi-sel.c 2026-08-27 18:06:20.000000000 +0200 @@ -2035,7 +2035,7 @@ ipmi_sel_ctx_errormsg (state_data->sel_ctx)); goto cleanup; } - goto out; + goto post_clear; } if (ipmi_sel_parse (state_data->sel_ctx, @@ -2119,6 +2119,7 @@ } } + post_clear: if (args->post_clear) { if (ipmi_sel_clear_sel (state_data->sel_ctx) < 0) @@ -2131,7 +2132,6 @@ } } - out: rv = 0; cleanup: fiid_obj_destroy (obj_cmd_rs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmiconsole/ipmiconsole-argp.c new/freeipmi-1.6.19/ipmiconsole/ipmiconsole-argp.c --- old/freeipmi-1.6.18/ipmiconsole/ipmiconsole-argp.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmiconsole/ipmiconsole-argp.c 2026-08-27 18:06:20.000000000 +0200 @@ -374,4 +374,3 @@ verify_common_cmd_args (&(cmd_args->common_args)); _ipmiconsole_args_validate (cmd_args); } - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/ipmiconsole/ipmiconsole.c new/freeipmi-1.6.19/ipmiconsole/ipmiconsole.c --- old/freeipmi-1.6.18/ipmiconsole/ipmiconsole.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/ipmiconsole/ipmiconsole.c 2026-08-27 18:06:20.000000000 +0200 @@ -262,6 +262,9 @@ struct timeval tv; ssize_t n; fd_set rds; + int nfds; + + nfds = ((solfd > localfd) ? solfd : localfd) + 1; while (sigterm == 0) { @@ -272,7 +275,7 @@ tv.tv_sec = 0; tv.tv_usec = 250000; - if (select (solfd + 1, &rds, NULL, NULL, &tv) < 0) + if (select (nfds, &rds, NULL, NULL, &tv) < 0) { perror ("select"); return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libfreeipmi/fru/ipmi-fru.c new/freeipmi-1.6.19/libfreeipmi/fru/ipmi-fru.c --- old/freeipmi-1.6.18/libfreeipmi/fru/ipmi-fru.c 2026-06-02 18:44:43.000000000 +0200 +++ new/freeipmi-1.6.19/libfreeipmi/fru/ipmi-fru.c 2026-08-27 18:06:20.000000000 +0200 @@ -488,6 +488,17 @@ goto cleanup; } + /* The BMC must not return more bytes than were requested. A + * larger count_returned would advance num_bytes_read past + * fru_read_bytes and overflow frubuf via the memcpy below, so + * reject it rather than trust the device-supplied count. + */ + if (count_returned > count_to_read) + { + FRU_SET_ERRNUM (ctx, IPMI_FRU_ERR_IPMI_ERROR); + goto cleanup; + } + memcpy (frubuf + num_bytes_read, buf, count_returned); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libfreeipmi/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h new/freeipmi-1.6.19/libfreeipmi/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h --- old/freeipmi-1.6.18/libfreeipmi/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h 2023-06-06 00:58:27.000000000 +0200 +++ new/freeipmi-1.6.19/libfreeipmi/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h 2026-08-27 00:59:31.000000000 +0200 @@ -36,7 +36,7 @@ #define IPMI_PAYLOAD_INSTANCE_VALID(__val) \ (((__val) >= IPMI_PAYLOAD_INSTANCE_MIN \ - || (__val) <= IPMI_PAYLOAD_INSTANCE_MAX) ? 1 : 0) + && (__val) <= IPMI_PAYLOAD_INSTANCE_MAX) ? 1 : 0) #define IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_ASSERTED 0x0 #define IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_DEASSERTED 0x1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libfreeipmi/sel/ipmi-sel-string-fujitsu-irmc-common.c new/freeipmi-1.6.19/libfreeipmi/sel/ipmi-sel-string-fujitsu-irmc-common.c --- old/freeipmi-1.6.18/libfreeipmi/sel/ipmi-sel-string-fujitsu-irmc-common.c 2023-06-06 00:58:27.000000000 +0200 +++ new/freeipmi-1.6.19/libfreeipmi/sel/ipmi-sel-string-fujitsu-irmc-common.c 2026-08-27 18:04:19.000000000 +0200 @@ -80,10 +80,10 @@ uint8_t severity = 0; char data_buf[IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_DATA_LENGTH + 1]; char string_buf[IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_STRING_LENGTH + 1]; - uint8_t data_length; + unsigned int data_length; uint8_t max_read_length; - uint8_t offset = 0; - uint8_t component_length = 0; + unsigned int offset = 0; + size_t component_length = 0; const char *css_str = NULL; const char *severity_str = NULL; int rv = -1; @@ -208,8 +208,10 @@ "[Fujitsu OEM decoding requires administrator privilege]"); goto out; } - goto cleanup; } + + SEL_SET_ERRNUM (ctx, IPMI_SEL_ERR_IPMI_ERROR); + goto cleanup; } /* Get severity and CSS flag only once */ @@ -224,24 +226,29 @@ data_length = bytes_rs[15]; + if (data_length > IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_DATA_LENGTH + || offset > data_length) + { + SEL_SET_ERRNUM (ctx, IPMI_SEL_ERR_IPMI_ERROR); + goto cleanup; + } + bytes_rs[rs_len-1] = '\0'; /* just to be sure it's terminated */ component_length = strlen ((char *)bytes_rs + 16); - /* achu: truncate if there is overflow */ - if (offset + component_length > data_length) - { - memcpy (data_buf + offset, - &bytes_rs[16], - IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_DATA_LENGTH - offset); - offset = data_length; - } - else + if (component_length > (data_length - offset)) + component_length = data_length - offset; + + if (!component_length && offset < data_length) { - memcpy (data_buf + offset, - &bytes_rs[16], - component_length); - offset += component_length; + SEL_SET_ERRNUM (ctx, IPMI_SEL_ERR_IPMI_ERROR); + goto cleanup; } + + memcpy (data_buf + offset, + &bytes_rs[16], + component_length); + offset += component_length; } if (css == IPMI_OEM_FUJITSU_CSS_COMPONENT) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libipmidetect/ipmidetect.c new/freeipmi-1.6.19/libipmidetect/ipmidetect.c --- old/freeipmi-1.6.18/libipmidetect/ipmidetect.c 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/libipmidetect/ipmidetect.c 2026-08-27 18:06:20.000000000 +0200 @@ -526,6 +526,29 @@ } static int +_reset_node_lists (ipmidetect_t handle) +{ + fi_hostlist_destroy (handle->detected_nodes); + fi_hostlist_destroy (handle->undetected_nodes); + handle->detected_nodes = NULL; + handle->undetected_nodes = NULL; + + if (!(handle->detected_nodes = fi_hostlist_create (NULL))) + { + handle->errnum = IPMIDETECT_ERR_OUT_OF_MEMORY; + return (-1); + } + + if (!(handle->undetected_nodes = fi_hostlist_create (NULL))) + { + handle->errnum = IPMIDETECT_ERR_OUT_OF_MEMORY; + return (-1); + } + + return (0); +} + +static int _get_data (ipmidetect_t handle, const char *hostname, int port, @@ -563,7 +586,7 @@ if (!len) break; - num = sscanf (buf, "%s %lu\n", hostname, &localtime); + num = sscanf (buf, "%256s %lu\n", hostname, &localtime); if (num != 2) { handle->errnum = IPMIDETECT_ERR_INTERNAL; @@ -606,17 +629,8 @@ if (_read_conffile (handle, &conffile_config) < 0) goto cleanup; - if (!(handle->detected_nodes = fi_hostlist_create (NULL))) - { - handle->errnum = IPMIDETECT_ERR_OUT_OF_MEMORY; - goto cleanup; - } - - if (!(handle->undetected_nodes = fi_hostlist_create (NULL))) - { - handle->errnum = IPMIDETECT_ERR_OUT_OF_MEMORY; - goto cleanup; - } + if (_reset_node_lists (handle) < 0) + goto cleanup; handle->load_state = IPMIDETECT_LOAD_STATE_SETUP; @@ -650,16 +664,21 @@ timeout_len = IPMIDETECT_TIMEOUT_LEN_DEFAULT; } - if (conffile_config.hostnames_flag) + if (!hostname && conffile_config.hostnames_flag) { unsigned int i; + unsigned int attempts = 0; for (i = 0; i < conffile_config.hostnames_len; i++) { if (strlen (conffile_config.hostnames[i]) > 0) { + if (attempts && _reset_node_lists (handle) < 0) + goto cleanup; + attempts++; + if (_get_data (handle, - hostname, + conffile_config.hostnames[i], port, timeout_len) < 0) continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libipmimonitoring/ipmi_monitoring.c new/freeipmi-1.6.19/libipmimonitoring/ipmi_monitoring.c --- old/freeipmi-1.6.18/libipmimonitoring/ipmi_monitoring.c 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/libipmimonitoring/ipmi_monitoring.c 2026-08-27 18:06:20.000000000 +0200 @@ -869,7 +869,7 @@ if (!c->sel_records_itr) { - c->errnum = IPMI_MONITORING_ERR_NO_SENSOR_READINGS; + c->errnum = IPMI_MONITORING_ERR_NO_SEL_RECORDS; return (-1); } @@ -887,7 +887,7 @@ if (!c->sel_records_itr) { - c->errnum = IPMI_MONITORING_ERR_NO_SENSOR_READINGS; + c->errnum = IPMI_MONITORING_ERR_NO_SEL_RECORDS; return (-1); } @@ -902,7 +902,7 @@ if (!c || c->magic != IPMI_MONITORING_MAGIC) return; - list_delete_all (c->sensor_readings, _list_delete_all, "dummyvalue"); + list_delete_all (c->sel_records, _list_delete_all, "dummyvalue"); if (c->sel_records_itr) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/libipmimonitoring/ipmi_monitoring_ipmi_communication.c new/freeipmi-1.6.19/libipmimonitoring/ipmi_monitoring_ipmi_communication.c --- old/freeipmi-1.6.18/libipmimonitoring/ipmi_monitoring_ipmi_communication.c 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/libipmimonitoring/ipmi_monitoring_ipmi_communication.c 2026-08-27 18:06:20.000000000 +0200 @@ -398,7 +398,7 @@ else privilege_level = IPMI_MONITORING_PRIVILEGE_LEVEL_DEFAULT; - if (config && config->cipher_suite_id > 0) + if (config && config->cipher_suite_id >= 0) cipher_suite_id = config->cipher_suite_id; else cipher_suite_id = 3; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/man/Makefile.am new/freeipmi-1.6.19/man/Makefile.am --- old/freeipmi-1.6.18/man/Makefile.am 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/man/Makefile.am 2026-08-27 18:06:20.000000000 +0200 @@ -189,7 +189,7 @@ manpage-common-legacy-output.man $(MANS_CPP): $(MANS_CPP:%=%.pre) - $(CPP_FOR_BUILD) -nostdinc -w -C -P -I. -I$(top_srcdir)/man [email protected] $@ + $(CPP_FOR_BUILD) -x c -nostdinc -w -C -P -I. -I$(top_srcdir)/man [email protected] -o $@ CLEANFILES = $(MANS_CPP) *~ DISTCLEANFILES = $(MANS_CPP) $(MANS_CPP:%=%.pre) .deps/*.P diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/man/Makefile.in new/freeipmi-1.6.19/man/Makefile.in --- old/freeipmi-1.6.18/man/Makefile.in 2026-06-02 18:49:27.000000000 +0200 +++ new/freeipmi-1.6.19/man/Makefile.in 2026-08-27 19:47:21.000000000 +0200 @@ -1022,7 +1022,7 @@ $(MANS_CPP): $(MANS_CPP:%=%.pre) - $(CPP_FOR_BUILD) -nostdinc -w -C -P -I. -I$(top_srcdir)/man [email protected] $@ + $(CPP_FOR_BUILD) -x c -nostdinc -w -C -P -I. -I$(top_srcdir)/man [email protected] -o $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/man/freeipmi.conf.5.pre.in new/freeipmi-1.6.19/man/freeipmi.conf.5.pre.in --- old/freeipmi-1.6.18/man/freeipmi.conf.5.pre.in 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/man/freeipmi.conf.5.pre.in 2026-08-27 18:06:20.000000000 +0200 @@ -876,7 +876,7 @@ .B ipmi-sel(8) \fI\-\-list\-types\fR option to see possible string input types. .TP -\fBipmi\-sel\-exclude\-types\fR \fSENSOR-TYPES-LIST\fR Specify +\fBipmi\-sel\-exclude\-types\fR \fISENSOR-TYPES-LIST\fR Specify default sensor types to not show SEL events for. Multiple sensor types can be specified separated by whitespace. Users may specify sensor types by string or by number. Please see @@ -1021,7 +1021,7 @@ .B ipmi-sensors(8) \fI\-\-list\-types\fR option to see possible string input types. .TP -\fBipmi\-sensors\-exclude\-types\fR \fSENSOR-TYPES-LIST\fR Specify +\fBipmi\-sensors\-exclude\-types\fR \fISENSOR-TYPES-LIST\fR Specify default sensor types to not show sensor outputs for. Multiple sensor types can be specified separated by whitespace. Users may specify sensor types by string or by number. Please see diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/man/ipmidetectd.conf.5.pre.in new/freeipmi-1.6.19/man/ipmidetectd.conf.5.pre.in --- old/freeipmi-1.6.18/man/ipmidetectd.conf.5.pre.in 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/man/ipmidetectd.conf.5.pre.in 2026-08-27 18:06:20.000000000 +0200 @@ -44,7 +44,6 @@ .SH "IPMIDETECTD CONFIGURATION OPTIONS" .TP -.TP .I ipmiping_period num Specify the period time in milliseconds that IPMI pings should be regularly sent out. Default is 15000. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freeipmi-1.6.18/man/ipmiseld.conf.5.pre.in new/freeipmi-1.6.19/man/ipmiseld.conf.5.pre.in --- old/freeipmi-1.6.18/man/ipmiseld.conf.5.pre.in 2026-06-02 18:44:44.000000000 +0200 +++ new/freeipmi-1.6.19/man/ipmiseld.conf.5.pre.in 2026-08-27 18:06:20.000000000 +0200 @@ -122,7 +122,7 @@ .B ipmi-sel(8) \fI\-\-list\-types\fR option to see possible string input types. .TP -\fIexclude\-sensor\-types\fR \fSENSOR-TYPES-LIST\fR +\fIexclude\-sensor\-types\fR \fISENSOR-TYPES-LIST\fR Specify sensor types of SEL events to not log. default sensor types to not show sensor outputs for. Multiple sensor types can be specified separated by whitespace. Users may specify sensor types by
