[pmg-devel] [PATCH pmg-log-tracker] fix wrong QID argument handling

Mira Limbeck m.limbeck at proxmox.com
Tue Sep 23 10:21:15 CEST 2025


Sorry, git removed the line between the ```.

On 9/22/25 18:05, Mira Limbeck wrote:
> This fixes the mail lookup based on QID when only time and line info was
> available, not a valid QID, which resulted in the following error in the
> GUI:
> `Error entry 'T68CD4EC2L00000003' not found (500)`
> 
> Somewhere between pmg-log-tracker 2.5.0 and 3.0 the behavior of
> libc::sscanf seemed to have changed. It now requires mutable access to
> the variables passed in, rather than immutable ones.
> 
> With 3.0 the behavior changed so that the following was printed:
> ```
The following was printed (time = 0, line = 0)
# QID: T       0L00000000

> ```
> Both `time` and `line` were kept at 0, the value they are initialized to
> before sscanf is called.
> 
> By changing the variables to mutable the values are now parsed and set
> correctly.
> 
> Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
> ---
>  src/main.rs | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/src/main.rs b/src/main.rs
> index 0a4f192..0299be5 100644
> --- a/src/main.rs
> +++ b/src/main.rs
> @@ -1964,12 +1964,19 @@ impl Parser {
>          };
>  
>          while let Some(q) = args.opt_value_from_str::<_, String>(["-q", "--queue-id"])? {
> -            let ltime: time_t = 0;
> -            let rel_line_nr: libc::c_ulong = 0;
> +            let mut ltime: time_t = 0;
> +            let mut rel_line_nr: libc::c_ulong = 0;
>              let input = CString::new(q.as_str())?;
>              let bytes = concat!("T%08lXL%08lX", "\0");
>              let format = unsafe { std::ffi::CStr::from_bytes_with_nul_unchecked(bytes.as_bytes()) };
> -            if unsafe { libc::sscanf(input.as_ptr(), format.as_ptr(), &ltime, &rel_line_nr) == 2 } {
> +            if unsafe {
> +                libc::sscanf(
> +                    input.as_ptr(),
> +                    format.as_ptr(),
> +                    &mut ltime,
> +                    &mut rel_line_nr,
> +                ) == 2
> +            } {
>                  self.options
>                      .match_list
>                      .push(Match::RelLineNr(ltime, rel_line_nr));





More information about the pmg-devel mailing list