-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Evita NullPointerException al buscar keystore Firefox en algunos casos en Linux #313
Open
albfernandez
wants to merge
2
commits into
ctt-gob-es:master
Choose a base branch
from
albfernandez:npe-MozillaKeyStoreUtilitiesUnix
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Evita NullPointerException al buscar keystore Firefox en algunos casos en Linux #313
albfernandez
wants to merge
2
commits into
ctt-gob-es:master
from
albfernandez:npe-MozillaKeyStoreUtilitiesUnix
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Si intentamos buscar la version de firefox en un directorio que no tenemos permisos pero si que vemos, entonces da un NPE, ya que el metodo isDirectory nos devuelve true pero el metodo list nos devuelve null, y se está suponiendo erroneamente que si isDirectory devuelve true list devolverá un array Relacionado con ctt-gob-es#252
Alberto,
¿Y si además de comprobar isDirectory() se comprueba canRead() es correcto suponer que .list() nunca va a dar null?
Gracias!
…________________________________
De: Alberto Fernández ***@***.***>
Enviado: viernes, 3 de marzo de 2023 1:28
Para: ctt-gob-es/clienteafirma ***@***.***>
Cc: Subscribed ***@***.***>
Asunto: [ctt-gob-es/clienteafirma] Evita NullPointerException al buscar keystore Firefox en algunos casos en Linux (PR #313)
Error a resolver
NullPointerException en MozillaKeyStoreUtilitiesUnix.searchLastFirefoxVersion en algunos casos.
Resumen
Si intentamos buscar la versión de Firefox en un directorio que no tenemos permisos pero si que vemos, entonces da un NullPointerException, ya que el método isDirectory nos devuelve true pero el método list nos devuelve null, y se está suponiendo erróneamente que si isDirectory devuelve true, list devolverá un array
if (directoryList.isDirectory() {
// ...
for (final String filename : directoryLib.list()) { // NPE aqui porque list() devuelve null
// ...
}
}
Relacionado con #252<#252>
Detalles
Tenemos un directorio de otro usuario, del que no tenemos permisos, ejemplo:
drwx------ 2 root root 4,0K mar 3 01:02 prueba
Si ejecutamos un programa con otro usuario que no sea root, el método
file.isDirectory();
nos devuelve true, porque el directorio existe.
Pero al ejecutar
file.list();
Nos devuelve null.
Si bien la documentación de Java nos puede dar lugar a confusión, puesto que da a entender lo que pone el código actual: que si isDirectory()devuelve true, list() no devolverá null. Sin embargo en este caso especial no es así, y es necesario poner la comprobación de nulo propuesta en esta Pull Request.
If this abstract pathname does not denote a directory, then this method returns null.
Otherwise an array of strings is returned, one for each file or directory in the directory.
traza en la versión 1.7.1
Exception in thread "main" java.lang.ExceptionInInitializerError
at es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities.getSystemNSSLibDir(MozillaKeyStoreUtilities.java:251)
at es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities.loadNSS(MozillaKeyStoreUtilities.java:694)
at es.gob.afirma.keystores.mozilla.NssKeyStoreManager.getNssProvider(NssKeyStoreManager.java:122)
at es.gob.afirma.keystores.mozilla.NssKeyStoreManager.init(NssKeyStoreManager.java:59)
at es.gob.afirma.keystores.mozilla.MozillaUnifiedKeyStoreManager.init(MozillaUnifiedKeyStoreManager.java:75)
at es.gob.afirma.keystores.AOKeyStoreManagerFactory.getNssKeyStoreManager(AOKeyStoreManagerFactory.java:511)
at es.gob.afirma.keystores.AOKeyStoreManagerFactory.getMozillaUnifiedKeyStoreManager(AOKeyStoreManagerFactory.java:542)
at es.gob.afirma.keystores.AOKeyStoreManagerFactory.getAOKeyStoreManager(AOKeyStoreManagerFactory.java:133)
at es.gob.afirma.standalone.SimpleAfirma.main(SimpleAfirma.java:708)
Caused by: java.lang.NullPointerException
at es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilitiesUnix.searchLastFirefoxVersion(MozillaKeyStoreUtilitiesUnix.java:145)
at es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilitiesUnix.getNssPaths(MozillaKeyStoreUtilitiesUnix.java:78)
at es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilitiesUnix.(MozillaKeyStoreUtilitiesUnix.java:26)
... 9 more
________________________________
You can view, comment on, or merge this pull request online at:
#313
Commit Summary
* 30f0763<30f0763> Evita NPE al listar directorio.
File Changes
(1 file<https://github.com/ctt-gob-es/clienteafirma/pull/313/files>)
* M afirma-keystores-mozilla/src/main/java/es/gob/afirma/keystores/mozilla/MozillaKeyStoreUtilitiesUnix.java<https://github.com/ctt-gob-es/clienteafirma/pull/313/files#diff-8228fa0a1a6a021ff1804669bd58b229880cfc0bc2a3f7f8e369d7a7d98d33c4> (9)
Patch Links:
* https://github.com/ctt-gob-es/clienteafirma/pull/313.patch
* https://github.com/ctt-gob-es/clienteafirma/pull/313.diff
—
Reply to this email directly, view it on GitHub<#313>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABM5YHDR46RUI3MTGRKSHBTW2E3MTANCNFSM6AAAAAAVOAH4TU>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Hola if (directoryLib.isDirectory() && directoryLib.canRead() && directoryLib.canExecute()){
// ..
} |
¡Gracias!
…________________________________
De: Alberto Fernández ***@***.***>
Enviado: viernes, 3 de marzo de 2023 13:25
Para: ctt-gob-es/clienteafirma ***@***.***>
Cc: ClawGrip ***@***.***>; Comment ***@***.***>
Asunto: Re: [ctt-gob-es/clienteafirma] Evita NullPointerException al buscar keystore Firefox en algunos casos en Linux (PR #313)
Hola
Acabo de probarlo y si, con canRead valdría, pero si lo ponemos así mejor poner canExecute también:
con canRead podríamos listar los subdirectorios pero si no tenemos canExecute nos devolverá una lista de sub-directorios a los que no podemos acceder.
—
Reply to this email directly, view it on GitHub<#313 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABM5YHED4IF3J5HZPV5PB2TW2HPMXANCNFSM6AAAAAAVOAH4TU>.
You are receiving this because you commented.Message ID: ***@***.***>
|
Actualizada la Pull Request |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Error a resolver
NullPointerException en MozillaKeyStoreUtilitiesUnix.searchLastFirefoxVersion en algunos casos.
Resumen
Si intentamos buscar la versión de Firefox en un directorio que no tenemos permisos pero si que vemos, entonces da un NullPointerException, ya que el método isDirectory nos devuelve true pero el método list nos devuelve null, y se está suponiendo erróneamente que si isDirectory devuelve true, list devolverá un array
Relacionado con #252
Detalles
Tenemos un directorio de otro usuario, del que no tenemos permisos, ejemplo:
Si ejecutamos un programa con otro usuario que no sea root, el método
nos devuelve true, porque el directorio existe.
Pero al ejecutar
Nos devuelve null.
Si bien la documentación de Java nos puede dar lugar a confusión, puesto que da a entender lo que pone el código actual: que si
isDirectory()
devuelve true,list()
no devolverá null. Sin embargo en este caso especial no es así, y es necesario poner la comprobación de nulo propuesta en esta Pull Request.traza en la versión 1.7.1