pike.git / lib / modules / Standards.pmod / ASN1.pmod / Types.pmod

version» Context lines:

pike.git/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod:345:       return s;    }       this_object decode_primitive(string(0..255) contents,    function(Stdio.Buffer,    mapping(int:program(Object)):    Object)|void decoder,    mapping(int:program(Object))|void types,    void|int(0..1) secure) { -  if( secure && sizeof(contents)>1 && contents[0]==0 ) -  error("Leading zero."); +  if ( (secure && (sizeof(contents)>1)) && +  (((contents[0]==0) && !(contents[1] & 0x80)) || +  ((contents[0] == 255) && (contents[1] & 0x80))) ) { +  // werror("Contents: %O\n", contents); +  error("Leading zero in integer encoding.\n"); +  }    value = Gmp.mpz(contents, 256);    if (contents[0] & 0x80) /* Negative */    value -= pow(256, sizeof(contents));    return this;    }       protected string _sprintf(int t) {    if(t!='O') return UNDEFINED;    if(!value) return sprintf("%O(0)", this_program);    return sprintf("%O(%d %s)", this_program,