MacFileUtils: FSPathMakeRef passes an int where the C function takes its FSRef output pointer
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 79/100
Línea de trabajo
Empieza en contrib/platform/src/com/sun/jna/platform/mac/MacFileUtils.java, en las declaraciones de FileManager alrededor de las líneas 64–65, y compara FSPathMakeRef con la declaración de CarbonCore citada y con la firma adyacente de FSPathMakeRefWithOptions. Corrige el parámetro de salida FSRef que falta o elimina la declaración obsoleta y, después, confirma que la declaración coincide con la firma de la función C. El issue indica que no se realizó ninguna compilación ni ejecución.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
FileManager.FSPathMakeRef is declared with an int options as its second argument. The C function has no options parameter: its second argument is the FSRef * it writes the result to.
// contrib/platform/src/com/sun/jna/platform/mac/MacFileUtils.java:64-65
int FSPathMakeRef(String source, int options, ByteByReference isDirectory);
int FSPathMakeRefWithOptions(String source, int options, FSRef fsref, ByteByReference isDirectory);
// CarbonCore/Files.h:4116 (macOS SDK 26.1)
extern OSStatus FSPathMakeRef(const UInt8 *path, FSRef *ref, Boolean *isDirectory) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
It looks like the parameter list of FSPathMakeRefWithOptions, one line below, with the FSRef dropped.
What it can cause
The callee writes its 80-byte FSRef to whatever address the options integer names: options = 0 hands it a NULL output pointer, and any other value is an arbitrary address. Either way the caller has no FSRef to read the result from. Nothing in JNA calls it, so only code that calls it directly is affected.
Fix
int FSPathMakeRef(String path, FSRef ref, ByteByReference isDirectory);, or drop it, since it has been deprecated since 10.8 and FSPathMakeRefWithOptions is there. Happy to send a PR for whichever you prefer.
How this was found
By a research tool that compares each native declaration against the C declaration of the function it binds. Nothing was built or executed; every file quoted is in this repository at 5.19.1, and unchanged on master.
- Lenguaje dominante
- Java
- Estrellas
- 8.9k
- Forks
- 1.7k
- Merge medio
- 1 d 13 h
- PR fusionados (30 d)
- 1
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 java-native-access/jna
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
java-native-access/jna#1745 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
java-native-access/jna#1747 ·
-
`Native.typeOptions` never releases library interfaces, leaking classloadersPosiblemente ocupada @curforever la tomó hace 10 días. Abierto
Dificultad 4/5 1-2 días Aptitud para principiantes 48/100
java-native-access/jna#1742 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 66/100
java-native-access/jna#1738 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
java-native-access/jna#1736 ·
Todos los issues de java-native-access/jna
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ome/ome-codecs#48 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
tonihele/OpenKeeper#672 ·
Los mantenedores suelen responder en 4 días
-
Shaded google-api-client trust stores still include AAA Certificate Services (eMudhra CA compromise)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
snowflakedb/snowflake-jdbc#2763 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ControlSystemStudio/phoebus#3983 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
zamojski/TowerCollector#292 · 1 comentario ·