nullptr assure que si la fonction est appelée ton soft crashe (accès à la page d'addresse 0 qui n'est pas mappée --> aucune exécution de code) sans pouvoir permettre d'exécution de code non controllée
En fait, pour être précis, déréférencer un pointeur null ne garantit pas que le soft crashe : c'est un comportement indéfini (undefined behavior).
Par exemple, compile ce code avec gcc -O2 et exécute-le :
(je sais qu'il y a des systèmes de cache dans la JVM pour certaines valeurs par exemple)
Oui, par exemple l'autoboxing des int utilise un cache pour les valeurs sur 8 bits. Cf l'implémentation de Integer.valueOf(int) (qui est appelé automatiquement pour l'autoboxing).
Mais vraiment je préfère une construction comme ici (avec guava)
publicstaticfinalMap<String,Integer>myStruc=ImmutableMap.<String,Integer>builder().put("foo",42).put("bar",84).build();// on peut utiliser .of() dans ce cas c'est plus concis
lorsqu'il s'agit juste de choisir une valeur (encore plus que lorsqu'il s'agit d'un calcul), on voudrait pouvoir être totalement déclaratif ('a' → 12, 'b' → 642, 'r' → 727,…)
Étant donné qu'une fonction de hash (ici: String → int) n'est pas injective, il faut vérifier l'égalité de chaînes même dans le cas où elles ont le même hash. Où est-elle effectuée dans ton dernier exemple?
Le switch sur les Strings en Java 7 calcule aussi le hash, mais c'est juste une question d'optimisation (random link) ; évidemment cela ne permet pas de se passer de la vérification de l'égalité.
Je te demande (à toi car j'ai la flemme de débattre avec Greg KH) de contre-argumenter non pas sur le fait que ça marche, mais que ça marche mieux que si MIT pour obtenir ce qu'on veut.
Pour reprendre l'analogie de la terrasse, tu pourras plus facilement obtenir que des non-clients partent si c'est écrit "réservé aux clients" que si c'est écrit "ouvert à tous".
Justement, ce que tu affiches, je le contredis en disant qu'une menace en promettant de ne pas la mettre à exécution n'est plus une menace.
Comme dit @patrick_g, ton raisonnement est trop binaire. Pour toi, le fait de ne pas faire appliquer la GPL par les tribunaux (et même le dire en avance), c'est équivalent à faire de la MIT.
Imagine deux restaurants (supposons de restauration rapide pour que ce soit crédible) possédant une terrasse avec des tables et des chaises.
La première est ouverte à tous.
La seconde est réservée au client du restaurant.
Le patron de la deuxième dit publiquement (dans une interview) qu'il demande généralement aux non-clients de partir quand ça se présente, mais qu'il n'irait pas jusqu'à appeler la police.
Faut-il en conclure que dans les faits, la seconde terrasse est ouverte à tous?
À titre personnel, j'utilise exclusivement XMPP (+OTR avec certains contacts) pour la messagerie instantanée (en entreprise, j'utilise aussi d'autres outils).
Like any federated protocol, extensions don't mean much unless everyone applies them, and that's an almost impossible task in a truly federated landscape. What we have instead is a complicated morass of XEPs that aren't consistently applied anywhere. The implications of that are severe, because someone's choice to use an XMPP client or server that doesn't support video or some other arbitrary feature doesn't only effect them, it effects everyone who tries to communicate with them. It creates a climate of uncertainty, never knowing whether things will work or not. In the consumer space, fractured client support is often worse than no client support at all, because consistency is incredibly important for creating a compelling user experience.
La perte de performance due à FUSE/SSHFS n'est-elle pas négligeable par rapport au fait que les données soient distantes?
Ou alors la gestion n'est pas optimale pour fonctionner sur le réseau?
Pour des backups incrémentaux chiffrés, je te conseille duplicity.
Je n'ai pas crypté mes partitions à l'installation car j'ai supposé que ça me demanderait un mot de passe supplémentaire à chaque démarrage
Si tu es seul utilisateur sur le pc, tu peux chiffrer le disque dur et désactiver la demande du mot de passe au login (tu devras alors uniquement donner la passphrase pour déchiffrer le disque).
Dans le cadre d'un backup chiffré à distance, ça n'a aucun intérêt par contre : le rsync va tout rapatrier en local pour vérifier les données qu'il a besoin d'envoyer.
Debian t'en avertit quand tu l'installes d'ailleurs :
┌────────────────────────┤ Configuration de encfs ├─────────────────────────┐
│ │
│ Encfs security information │
│ │
│ According to a security audit by Taylor Hornby (Defuse Security), the │
│ current implementation of Encfs is vulnerable or potentially vulnerable │
│ to multiple types of attacks. For example, an attacker with read/write │
│ access to encrypted data might lower the decryption complexity for │
│ subsequently encrypted data without this being noticed by a legitimate │
│ user, or might use timing analysis to deduce information. │
│ │
│ Until these issues are resolved, encfs should not be considered a safe │
│ home for sensitive data in scenarios where such attacks are possible. │
│ │
│ <Ok> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
Néanmoins (pour continuer à challenger le fonctionnement), un préfixe de 4 octets permet tout de même d'avoir une bonne information. Pour une URL spécifique à surveiller (par exemple https://tails.boum.org/), il n'y aura qu'une URL sur 2³² (soit ~ 1 sur 4 milliards) qui aura le même préfixe. Il y aura donc quelques faux positifs vu le nombre de personnes sur Internet, mais ça donne une information significative il me semble.
Oui, mais si tu veux cibler les gens qui chargent une URL particulière, ça ne pose pas de problème : il suffit de calculer le hash de l'URL en question.
Ensuite, Google ne connait jamais le hash complet de l'URL que tu visites, mais uniquement un préfixe de cet hash.
Mais ce sont eux qui contrôlent la longueur du hash (pour chaque chunk). Ils peuvent donc faire un chunk avec un préfixe de 31 octet (ou même moins), pour lequel seule cette URL correspondra. Ensuite, lors de la visite de l'URL en question chez les clients, Firefox va demander la liste des full-hashes ayant pour préfixe ces 31 premiers octets. And voilà.
Donc ce fonctionnement n'empêche pas techniquement Google de demander à firefox de lui signaler toute connexion à une URL spécifique.
Donc si Google (par exemple parce que la NSA lui demande gentiment l'oblige) veut connaître la liste de ceux qui visitent https://wikileaks.org/le_dernier_leak_sur_les_pratiques_de_la_nsa, il rajoute le hash de cette URL dans sa liste mise à jour toutes les demi-heures, et tous ceux qui vont sur ce site avec Firefox en informeront Google.
Ce n'est pas pour l'ensemble des liens sur n'importe quel site web :
Firefox will open predictive connections to sites when the user hovers their mouse over thumbnails on the New Tab Page or the user starts to search in the Search Bar, or in the search field on the Home or the New Tab Page.
Quoi qu'en dise la doc, en pratique ce comportement concerne tous les liens (testé sur les liens de journaux linuxfr).
il semble que ce soit seulement la connexion TCP qui est initialisée
Tout-à-fait, il fait le SYN, SYN-ACK, ACK et attend. Il s'agit tout de même d'une connexion qui peut informer le serveur que tu as été sur une page (puisque tu as survolé un lien qu'elle contenait).
L'exception qui confirme la règle est une expression courante, le plus souvent mal comprise et donc mal utilisée. Elle signifie que la présence d'une exception peut confirmer la présence d'une règle générale (puisqu'il ne peut pas y avoir d'exception à une règle qui n'existe pas), et non pas que la présence d'une exception confirme la validité d'une règle (en recherche scientifique, il serait par exemple inconcevable d'énoncer que des mesures qui s'écartent d'une règle ou d'une loi confirment cette règle ou cette loi ; ce serait naturellement le contraire).
Au passage, une tribune intéressante de Frédéric Lordon :
Que le gouvernement Syriza, à l’encontre de ses propres engagements électoraux, ait accepté de se couler dans la logique du mémorandum et de jouer le jeu de l’ajustement budgétaire n’était pas encore assez : car la Troïka ne demande pas qu’un objectif global, mais aussi la manière. Il n’est pas suffisant que la Grèce s’impose une restriction supplémentaire de 1,7 point de PIB, il faut qu’elle la compose comme il faut. Par exemple l’augmentation du taux d’imposition sur les sociétés de 26 % à 29 %, ainsi que la taxe exceptionnelle de 12 % sur les profits supérieurs à 500 000 euros ont été refusées par la Troïka au motif qu’elles étaient… de nature à tuer la croissance ! – ou quand l’étrangleur déconseille à ses victimes le port du foulard. En revanche la Troïka tient beaucoup à ce qu’on en finisse avec la petite allocation de solidarité servie sur les retraites les plus pauvres – le décile inférieur a perdu jusqu’à 86 % de revenu disponible de 2008 à 2012 [1] … c’est donc qu’il reste 14 bons pourcents : du gras ! Elle refuse la proposition grecque de taxer les jeux en ligne, mais demande la fin du subventionnement du diesel pour les agriculteurs – des nantis. Et tout à l’avenant.
Prononcer le mot « référendum », c’est en effet immanquablement faire resurgir le spectre du Traité constitutionnel de 2005, celui de l’acharnement jusqu’à ce que ça dise oui, ou du contournement si ça persiste à dire non. Celui du putsch également, à l’image du débarquement en 2011 de Georges Papandréou, ordinaire socialiste de droite qui n’avait rien de bien méchant, mais avait fini par s’apercevoir qu’on approchait des seuils où férule macroéconomique et tyrannie politique deviennent dangereusement indistinctes, et éprouvé le besoin d’un mandat légitime en soumettant le mémorandum à son peuple… par référendum. Appliquant une doctrine en fait formée de longue date puisqu’elle est intrinsèque à l’Union monétaire même, mais dont la formulation pleinement explicite attendra 2015 et l’inénarrable Juncker – « il n’y a pas de choix démocratiques contre les Traités européens »… –, il avait suffi aux institutions européennes de quelques pressions de coulisses pour obtenir le renversement de l’imprudent, et nommer directement le banquier central Papademos premier ministre ! – c’est tellement plus simple –…
I'm not sure you understand that 100% of the Pocket code Firefox is shipping is open source. We are not shipping any closed source code for this project.
Il dit qu'il ne voit pas le problème…
Avec le même argument, je propose d'intégrer par défaut une boîte de texte pour poster directement un message sur Facebook…
[^] # Re: Pas uniquement string
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 2.
(si ça segfault avec
gcc -02
, essayer avecgcc -O -ftree-vrp
)blog.rom1v.com
[^] # Re: Pas uniquement string
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 3. Dernière modification le 02 septembre 2016 à 21:33.
En fait, pour être précis, déréférencer un pointeur null ne garantit pas que le soft crashe : c'est un comportement indéfini (undefined behavior).
Par exemple, compile ce code avec
gcc -O2
et exécute-le :(tiré d'un billet que j'ai écrit il y a quelque temps)
blog.rom1v.com
[^] # Re: Peucrédible
Posté par ®om (site web personnel) . En réponse au journal Un ransomware tout à fait déloyal ... et inquiétant. Évalué à 10.
.ssh/config
blog.rom1v.com
[^] # Re: Élévation des privilèges
Posté par ®om (site web personnel) . En réponse au journal Un ransomware tout à fait déloyal ... et inquiétant. Évalué à 4.
Ou une faille sur un logiciel qui tourne sur la machine.
blog.rom1v.com
[^] # Re: Pas uniquement string
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 2.
En C++,
var<int> m;
est default-initialized.Pour les types primitifs, ça veut dire non initialisé, mais pour un type complexe pas forcément.
blog.rom1v.com
[^] # Re: Map à la place du swicth/case
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 3. Dernière modification le 31 août 2016 à 14:59.
Les objets, ça prend de la place. Les
HashMap
s en particulier :)Cf Android Memories à partir de la slide 24.
Oui, par exemple l'autoboxing des
int
utilise un cache pour les valeurs sur 8 bits. Cf l'implémentation deInteger.valueOf(int)
(qui est appelé automatiquement pour l'autoboxing).Perso je trouve ça très verbeux.
En C++ c'est plus joli :
blog.rom1v.com
[^] # Re: Map à la place du swicth/case
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 4. Dernière modification le 31 août 2016 à 14:05.
Éventuellement tu peux scoper :
Ce pattern n'est pas si mal adapté aux switches :
En java en plus dans une
Map
, tu vas devoir wrapper ces valeurs dans des objets.blog.rom1v.com
# Vérification de l'égalité?
Posté par ®om (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 10. Dernière modification le 31 août 2016 à 12:19.
Étant donné qu'une fonction de hash (ici: String → int) n'est pas injective, il faut vérifier l'égalité de chaînes même dans le cas où elles ont le même hash. Où est-elle effectuée dans ton dernier exemple?
Le switch sur les Strings en Java 7 calcule aussi le hash, mais c'est juste une question d'optimisation (random link) ; évidemment cela ne permet pas de se passer de la vérification de l'égalité.
blog.rom1v.com
[^] # Re: Pas logique ou militant licence MIT
Posté par ®om (site web personnel) . En réponse au journal Faut-il défendre la GPL devant les tribunaux ?. Évalué à 6.
Pour reprendre l'analogie de la terrasse, tu pourras plus facilement obtenir que des non-clients partent si c'est écrit "réservé aux clients" que si c'est écrit "ouvert à tous".
blog.rom1v.com
[^] # Re: Pas logique ou militant licence MIT
Posté par ®om (site web personnel) . En réponse au journal Faut-il défendre la GPL devant les tribunaux ?. Évalué à 4.
@Zenitram
Comme dit @patrick_g, ton raisonnement est trop binaire. Pour toi, le fait de ne pas faire appliquer la GPL par les tribunaux (et même le dire en avance), c'est équivalent à faire de la MIT.
Imagine deux restaurants (supposons de restauration rapide pour que ce soit crédible) possédant une terrasse avec des tables et des chaises.
La première est ouverte à tous.
La seconde est réservée au client du restaurant.
Le patron de la deuxième dit publiquement (dans une interview) qu'il demande généralement aux non-clients de partir quand ça se présente, mais qu'il n'irait pas jusqu'à appeler la police.
Faut-il en conclure que dans les faits, la seconde terrasse est ouverte à tous?
oui, je sais, les analogies, tout ça…
blog.rom1v.com
# Choix
Posté par ®om (site web personnel) . En réponse au sondage Ce que je préfère en informatique / programmation / codage c'est... . Évalué à 9. Dernière modification le 27 juin 2016 à 17:26.
Heureusement qu'il y a cet avertissement, j'allais justement me plaindre qu'il y avait trop peu de choix.
blog.rom1v.com
# Reflections: The ecosystem is moving
Posté par ®om (site web personnel) . En réponse au journal Promotion d'XMPP, message pour nos amis. Évalué à 4. Dernière modification le 21 juin 2016 à 17:59.
À titre personnel, j'utilise exclusivement XMPP (+OTR avec certains contacts) pour la messagerie instantanée (en entreprise, j'utilise aussi d'autres outils).
Mais je vous conseille la lecture de ce billet (en Anglais) de ceux qui font TextSecure/Signal: https://whispersystems.org/blog/the-ecosystem-is-moving/
blog.rom1v.com
[^] # Re: astuce sécurité pour les paranoïaques
Posté par ®om (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 2.
Intéressant. Mais comment ça marche pour du chiffrement distant concrètement?
blog.rom1v.com
[^] # Re: Comparer NFS avec un fs implémenté par FUSE faut oser comme meme
Posté par ®om (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 5.
La perte de performance due à FUSE/SSHFS n'est-elle pas négligeable par rapport au fait que les données soient distantes?
Ou alors la gestion n'est pas optimale pour fonctionner sur le réseau?
blog.rom1v.com
[^] # Re: astuce sécurité pour les paranoïaques
Posté par ®om (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 3.
Pour des backups incrémentaux chiffrés, je te conseille duplicity.
Si tu es seul utilisateur sur le pc, tu peux chiffrer le disque dur et désactiver la demande du mot de passe au login (tu devras alors uniquement donner la passphrase pour déchiffrer le disque).
blog.rom1v.com
[^] # Re: astuce sécurité pour les paranoïaques
Posté par ®om (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 5.
Dans le cadre d'un backup chiffré à distance, ça n'a aucun intérêt par contre : le
rsync
va tout rapatrier en local pour vérifier les données qu'il a besoin d'envoyer.Par ailleurs,
encfs
n'est plus considéré sûr depuis l'année dernière :https://en.wikipedia.org/wiki/EncFS#Security
Debian t'en avertit quand tu l'installes d'ailleurs :
blog.rom1v.com
# Reverse SSHFS
Posté par ®om (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 7.
Pour info, il est aussi pratique parfois de pouvoir faire un montage "inversé" (machine locale vers machine distante).
Du coup, j'avais écrit un petit script, si ça intéresse quelqu'un :
https://github.com/rom1v/rsshfs
blog.rom1v.com
[^] # Re: Et le Expanded Malware Protection?
Posté par ®om (site web personnel) . En réponse à la dépêche Sortie de Firefox 40. Évalué à 2.
Tu as raison, je n'avais pas vu ça.
https://developers.google.com/safe-browsing/developers_guide_v3
Néanmoins (pour continuer à challenger le fonctionnement), un préfixe de 4 octets permet tout de même d'avoir une bonne information. Pour une URL spécifique à surveiller (par exemple
https://tails.boum.org/
), il n'y aura qu'une URL sur 2³² (soit ~ 1 sur 4 milliards) qui aura le même préfixe. Il y aura donc quelques faux positifs vu le nombre de personnes sur Internet, mais ça donne une information significative il me semble.blog.rom1v.com
[^] # Re: Et le Expanded Malware Protection?
Posté par ®om (site web personnel) . En réponse à la dépêche Sortie de Firefox 40. Évalué à 0.
Oui, mais si tu veux cibler les gens qui chargent une URL particulière, ça ne pose pas de problème : il suffit de calculer le hash de l'URL en question.
Mais ce sont eux qui contrôlent la longueur du hash (pour chaque chunk). Ils peuvent donc faire un chunk avec un préfixe de 31 octet (ou même moins), pour lequel seule cette URL correspondra. Ensuite, lors de la visite de l'URL en question chez les clients, Firefox va demander la liste des full-hashes ayant pour préfixe ces 31 premiers octets. And voilà.
Donc ce fonctionnement n'empêche pas techniquement Google de demander à firefox de lui signaler toute connexion à une URL spécifique.
blog.rom1v.com
[^] # Re: Et le Expanded Malware Protection?
Posté par ®om (site web personnel) . En réponse à la dépêche Sortie de Firefox 40. Évalué à 0.
Donc si Google (par exemple parce que la NSA
lui demande gentimentl'oblige) veut connaître la liste de ceux qui visitenthttps://wikileaks.org/le_dernier_leak_sur_les_pratiques_de_la_nsa
, il rajoute le hash de cette URL dans sa liste mise à jour toutes les demi-heures, et tous ceux qui vont sur ce site avec Firefox en informeront Google.C'est bien ça ou j'ai loupé quelque chose?
blog.rom1v.com
[^] # Re: lire la doc
Posté par ®om (site web personnel) . En réponse au journal Firefox/Iceweasel se connecte silencieusement lors du survol d'un lien. Évalué à 7.
Quoi qu'en dise la doc, en pratique ce comportement concerne tous les liens (testé sur les liens de journaux linuxfr).
Tout-à-fait, il fait le SYN, SYN-ACK, ACK et attend. Il s'agit tout de même d'une connexion qui peut informer le serveur que tu as été sur une page (puisque tu as survolé un lien qu'elle contenait).
blog.rom1v.com
[^] # Re: Blanc ou nul
Posté par ®om (site web personnel) . En réponse au journal Résolution du jeu d'échecs : patience, ça arrive.... Évalué à 10.
https://fr.wikipedia.org/wiki/L%27exception_qui_confirme_la_r%C3%A8gle
blog.rom1v.com
[^] # Re: Démocratie?
Posté par ®om (site web personnel) . En réponse au journal Et ce soir, la démocratie l'emporte ! . Évalué à 10.
Et bien sûr, on peut raisonner sur les dettes d'un État par analogie à celles d'un ménage…
blog.rom1v.com
[^] # Re: Démocratie?
Posté par ®om (site web personnel) . En réponse au journal Et ce soir, la démocratie l'emporte ! . Évalué à 10.
Et selon toi, c'est ça la démocratie?
Au passage, une tribune intéressante de Frédéric Lordon :
blog.rom1v.com
# Pas convaincant du tout
Posté par ®om (site web personnel) . En réponse au journal Le vice-président de Mozilla répond à l'auteur de Wallabag sur l'intégration de Pocket. Évalué à 5.
Il dit qu'il ne voit pas le problème…
Avec le même argument, je propose d'intégrer par défaut une boîte de texte pour poster directement un message sur Facebook…
blog.rom1v.com