codec command() silently truncates any payload longer than 255 bytes into a corrupt frame
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- rust
- Área
- backend-api-design
Línea de trabajo
Lee crates/pod-proto/src/codec.rs cerca de la línea 104, donde command() convierte la longitud de la carga útil en un byte. Comprueba cómo informa de los errores la función y cómo gestionan sus llamadores las cargas útiles no válidas; después, añade la comprobación de longitud solicitada. El trabajo estará listo cuando se rechace una carga útil de más de 255 bytes o se active la aserción de depuración prevista, y las tramas válidas mantengan su comportamiento actual.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
codec.rs command() writes the length byte as res.push(payload.len() as u8) (crates/pod-proto/src/codec.rs:104). A payload of 256+ bytes wraps mod 256, emitting a LEN that disagrees with the checksum (computed over the full payload), so the device sees a malformed/short frame. No command builds a >255B payload today (SetAlarm is the largest at 8B), and only SensorCommand::Random(Vec) is unbounded, so it is not currently triggered. But the LSP length field is inherently one byte, and the not-yet-built live MCU flash path (TODO(live-cutover)) will need to stream firmware — if it ever sends chunks through command(), oversized chunks would produce corrupt frames to an MCU mid-flash. Add a debug_assert/hard error when payload.len() > 255.
Filed from a repo-wide code audit (working tree at bcad746).
- Lenguaje dominante
- Rust
- Estrellas
- 0
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de GoogleBot42/podd
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
GoogleBot42/podd#63 ·
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
GoogleBot42/podd#62 ·
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
GoogleBot42/podd#60 ·
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
GoogleBot42/podd#61 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
GoogleBot42/podd#58 ·
Todos los issues de GoogleBot42/podd
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
rubys/roundhouse#1917 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
[cosmic-applet-battery] Division by zero displays NaN% when UPower reports max_brightness = 0Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
pop-os/cosmic-applets#1619 ·
Los mantenedores suelen responder en 3 días
-
binding:python bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día