/* object_put: * Put an object. Make sure that the MD5 of the response matches.. * Makes a few retry attempts * Return 0 if success, -1 if failure. */ int object_put(string bucket,string path, const char *buf,size_t buflen, const struct s3headers *extraheaders) { unsigned char md5[16]; memset(md5,0,sizeof(md5)); MD5((const unsigned char *)buf,buflen,md5); for(int i=0;i<s3_retry_max;i++){ s3_object_put_retry_count = i; if(i>0){ fprintf(stderr,"S3: Attempt to write object '%s' failed. Retrying...\n", path.c_str()); } response_buffer *res = request("PUT",bucket + "/" + path,"",0,buf,buflen,extraheaders); if(!res) { fprintf(stderr,"S3 request: No response.\n"); continue; } if(memcmp(res->ETag,md5,16)==0){ /* Check the MD5 of the response */ delete res; return 0; } char buf0[64],buf1[64]; fprintf(stderr,"S3: Expected ETag '%s' got '%s'\n", hexbuf(buf0,sizeof(buf0),md5,16,HEXBUF_SPACE4), hexbuf(buf1,sizeof(buf1),res->ETag,16,HEXBUF_SPACE4)); delete res; } /* Write failed. Delete the written object and return */ response_buffer *res = request("DELETE",bucket + "/" + path,"",0,0,0,0); if(res) delete res; errno = EIO; return -1; }
static void expandstream(fz_obj *obj, int num, int gen) { fz_error error; fz_buffer *buf, *tmp; fz_obj *newlen; error = pdf_loadstream(&buf, xref, num, gen); if (error) die(error); fz_dictdels(obj, "Filter"); fz_dictdels(obj, "DecodeParms"); if (doascii && isbinarystream(buf)) { tmp = hexbuf(buf->data, buf->len); fz_dropbuffer(buf); buf = tmp; addhexfilter(obj); } newlen = fz_newint(buf->len); fz_dictputs(obj, "Length", newlen); fz_dropobj(newlen); fprintf(out, "%d %d obj\n", num, gen); fz_fprintobj(out, obj, !doexpand); fprintf(out, "stream\n"); fwrite(buf->data, 1, buf->len, out); fprintf(out, "endstream\nendobj\n\n"); fz_dropbuffer(buf); }
static void expandstream(fz_obj *obj, int num, int gen) { fz_buffer *buf, *tmp; fz_obj *newlen; buf = pdf_load_stream(xref, num, gen); fz_dict_dels(obj, "Filter"); fz_dict_dels(obj, "DecodeParms"); if (doascii && isbinarystream(buf)) { tmp = hexbuf(buf->data, buf->len); fz_drop_buffer(ctx, buf); buf = tmp; addhexfilter(obj); } newlen = fz_new_int(ctx, buf->len); fz_dict_puts(obj, "Length", newlen); fz_drop_obj(newlen); fprintf(out, "%d %d obj\n", num, gen); fz_fprint_obj(out, obj, doexpand == 0); fprintf(out, "stream\n"); fwrite(buf->data, 1, buf->len, out); fprintf(out, "endstream\nendobj\n\n"); fz_drop_buffer(ctx, buf); }
static void copystream(fz_obj *obj, int num, int gen) { fz_error error; fz_buffer *buf, *tmp; fz_obj *newlen; error = pdf_load_raw_stream(&buf, xref, num, gen); if (error) die(error); if (doascii && isbinarystream(buf)) { tmp = hexbuf(buf->data, buf->len); fz_drop_buffer(ctx, buf); buf = tmp; addhexfilter(obj); newlen = fz_new_int(ctx, buf->len); fz_dict_puts(ctx, obj, "Length", newlen); fz_drop_obj(ctx, newlen); } fprintf(out, "%d %d obj\n", num, gen); fz_fprint_obj(ctx, out, obj, !doexpand); fprintf(out, "stream\n"); fwrite(buf->data, 1, buf->len, out); fprintf(out, "endstream\nendobj\n\n"); fz_drop_buffer(ctx, buf); }
std::ostream & operator <<(std::ostream &os,const sbuf_t &t){ char hex[17]; hexbuf(hex,sizeof(hex),t.buf,8,0); os << "sbuf[page_number=" << t.page_number << " pos0=" << t.pos0 << " " << "buf[0..8]=0x" << hex << " bufsize=" << t.bufsize << " pagesize=" << t.pagesize << "]"; return os; }
int ipapwd_gen_hashes(struct ipapwd_krbcfg *krbcfg, struct ipapwd_data *data, char *userpw, int is_krb, int is_smb, int is_ipant, Slapi_Value ***svals, char **nthash, Slapi_Value ***ntvals, char **errMesg) { int rc; *svals = NULL; *nthash = NULL; *errMesg = NULL; if (is_krb) { *svals = ipapwd_encrypt_encode_key(krbcfg, data, NULL, krbcfg->num_pref_encsalts, krbcfg->pref_encsalts, errMesg); if (!*svals) { /* errMesg should have been set in encrypt_encode_key() */ LOG_FATAL("key encryption/encoding failed\n"); rc = LDAP_OPERATIONS_ERROR; goto done; } } if (is_smb || is_ipant) { char nt[33]; uint8_t nt_key[16]; int ret; if (krbcfg->allow_nt_hash) { ret = encode_nt_key(userpw, nt_key); if (ret) { *errMesg = "Failed to generate NT/LM hashes\n"; LOG_FATAL("%s", *errMesg); rc = LDAP_OPERATIONS_ERROR; goto done; } hexbuf(nt, nt_key); nt[32] = '\0'; *nthash = slapi_ch_strdup(nt); } else { memset(nt_key, 0, 16); } if (is_ipant) { *ntvals = (Slapi_Value **)calloc(2, sizeof(Slapi_Value *)); if (!*ntvals) { LOG_OOM(); rc = LDAP_OPERATIONS_ERROR; goto done; } (*ntvals)[0] = slapi_value_new(); if (slapi_value_set((*ntvals)[0], nt_key, 16) == NULL) { rc = LDAP_OPERATIONS_ERROR; goto done; } } } rc = LDAP_SUCCESS; done: /* when error, free possibly allocated output parameters */ if (rc) { ipapwd_free_slapi_value_array(svals); ipapwd_free_slapi_value_array(ntvals); } return rc; }