®om a écrit 458 commentaires

  • [^] # Re: Pas uniquement string

    Posté par  (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 2.

    (si ça segfault avec gcc -02, essayer avec gcc -O -ftree-vrp)

    blog.rom1v.com

  • [^] # Re: Pas uniquement string

    Posté par  (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.

    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 :

    #include <stdio.h>
    #include <malloc.h>
    
    int main(int argc, char *argv[]) {
        int *i = argc == 1 ? NULL : malloc(sizeof(int));
        *i = 42;
        if (!i)
            return 1;
        printf("pwnd %d\n", *i);
        return 0;
    }

    (tiré d'un billet que j'ai écrit il y a quelque temps)

    blog.rom1v.com

  • [^] # Re: Peucrédible

    Posté par  (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  (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  (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.

    #include <iostream>
    
    template <typename T>
    struct var {
        T value;
        var() : value(42) {}
    };
    
    int main() {
        var<int> m;
        std::cout << m.value << std::endl;
        return 0;
    }

    blog.rom1v.com

  • [^] # Re: Map à la place du swicth/case

    Posté par  (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.

    J'avoue ne pas connaître le coût de l'auo(un)boxing.

    Les objets, ça prend de la place. Les HashMaps en particulier :)

    Cf Android Memories à partir de la slide 24.

    (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)

       public static final Map<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

    Perso je trouve ça très verbeux.

    En C++ c'est plus joli :

        const std::map<char, int> map {
            { 'a', 12 },
            { 'b', 642 },
            { 'r', 727 }
        };

    blog.rom1v.com

  • [^] # Re: Map à la place du swicth/case

    Posté par  (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.

    alors que mon langage a un switch sur les java.lang.String

    chaque case leak son contexte avec le reste du code

    Éventuellement tu peux scoper :

    switch (id) {
        case 1: {
            int i = 42;
            // …
            break;
        }
        case 2: {
            int i = -12;
            // …
            break;
        }
    }

    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,…)

    Ce pattern n'est pas si mal adapté aux switches :

    int map(char value) {
        switch (value) {
        case 'a': return 12;
        case 'b': return 642;
        case 'r': return 727;
        // …
        }
    }

    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  (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  (site web personnel) . En réponse au journal Faut-il défendre la GPL devant les tribunaux ?. Évalué à 6.

    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".

    blog.rom1v.com

  • [^] # Re: Pas logique ou militant licence MIT

    Posté par  (site web personnel) . En réponse au journal Faut-il défendre la GPL devant les tribunaux ?. Évalué à 4.

    @Zenitram

    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?

    oui, je sais, les analogies, tout ça…

    blog.rom1v.com

  • # Choix

    Posté par  (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.

    La liste des options proposées est volontairement limitée […] Il est donc inutile de se plaindre au sujet du faible nombre de réponses proposées

    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  (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/

    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.

    blog.rom1v.com

  • [^] # Re: astuce sécurité pour les paranoïaques

    Posté par  (site web personnel) . En réponse au journal SSHFS est un vrai système de fichiers en réseau. Évalué à 2.

    on peut aussi utiliser des programmes qui marchent bien avec le chiffrement distant. Par exemple dump la commande de sauvegarde de FreeBSD.

    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  (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  (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.

    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).

    blog.rom1v.com

  • [^] # Re: astuce sécurité pour les paranoïaques

    Posté par  (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 :

     ┌────────────────────────┤ 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>                                     │  
     │                                                                           │  
     └───────────────────────────────────────────────────────────────────────────┘  
    

    blog.rom1v.com

  • # Reverse SSHFS

    Posté par  (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  (site web personnel) . En réponse à la dépêche Sortie de Firefox 40. Évalué à 2.

    Dans la liste, soit on a un hash complet de 32 octets, soit on a un préfixe de 4 octets.

    Tu as raison, je n'avais pas vu ça.

    // Prefix type which currently is either 4B or 32B.

    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  (site web personnel) . En réponse à la dépêche Sortie de Firefox 40. Évalué à 0.

    Déjà on fonctionne par hash.

    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.

    blog.rom1v.com

  • [^] # Re: Et le Expanded Malware Protection?

    Posté par  (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 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.

    C'est bien ça ou j'ai loupé quelque chose?

    blog.rom1v.com

  • [^] # Re: lire la doc

    Posté par  (site web personnel) . En réponse au journal Firefox/Iceweasel se connecte silencieusement lors du survol d'un lien. Évalué à 7.

    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).

    blog.rom1v.com

  • [^] # Re: Blanc ou nul

    Posté par  (site web personnel) . En réponse au journal Résolution du jeu d'échecs : patience, ça arrive.... Évalué à 10.

    c'est l'exception qui confirme la règle

    https://fr.wikipedia.org/wiki/L%27exception_qui_confirme_la_r%C3%A8gle

    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).

    blog.rom1v.com

  • [^] # Re: Démocratie?

    Posté par  (site web personnel) . En réponse au journal Et ce soir, la démocratie l'emporte ! . Évalué à 10.

    Moi, je fais à la Syriza avec mon banquier, il me dit "non" direct et je dégage

    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  (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 :

    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 –…

    blog.rom1v.com

  • # Pas convaincant du tout

    Posté par  (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.

    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…

    blog.rom1v.com