static void do_close(JCR *jcr) { release_device(jcr->dcr); free_attr(attr); free_record(rec); free_jcr(jcr); dev->term(); }
/* * Remove a single item from the bsr tree */ static inline void remove_bsr(BSR *bsr) { free_bsr_item((BSR *)bsr->volume); free_bsr_item((BSR *)bsr->client); free_bsr_item((BSR *)bsr->sessid); free_bsr_item((BSR *)bsr->sesstime); free_bsr_item((BSR *)bsr->volfile); free_bsr_item((BSR *)bsr->volblock); free_bsr_item((BSR *)bsr->voladdr); free_bsr_item((BSR *)bsr->JobId); free_bsr_item((BSR *)bsr->job); free_bsr_item((BSR *)bsr->FileIndex); free_bsr_item((BSR *)bsr->JobType); free_bsr_item((BSR *)bsr->JobLevel); if (bsr->fileregex) { bfree(bsr->fileregex); } if (bsr->fileregex_re) { regfree(bsr->fileregex_re); free(bsr->fileregex_re); } if (bsr->attr) { free_attr(bsr->attr); } if (bsr->next) { bsr->next->prev = bsr->prev; } if (bsr->prev) { bsr->prev->next = bsr->next; } free(bsr); }
static void do_extract(char *devname) { struct stat statp; enable_backup_privileges(NULL, 1); jcr = setup_jcr("bextract", devname, bsr, director, VolumeName, 1); /* acquire for read */ if (!jcr) { exit(1); } dev = jcr->read_dcr->dev; if (!dev) { exit(1); } dcr = jcr->read_dcr; /* Make sure where directory exists and that it is a directory */ if (stat(where, &statp) < 0) { berrno be; Emsg2(M_ERROR_TERM, 0, _("Cannot stat %s. It must exist. ERR=%s\n"), where, be.bstrerror()); } if (!S_ISDIR(statp.st_mode)) { Emsg1(M_ERROR_TERM, 0, _("%s must be a directory.\n"), where); } free(jcr->where); jcr->where = bstrdup(where); attr = new_attr(jcr); compress_buf = get_memory(compress_buf_size); acl_data.last_fname = get_pool_memory(PM_FNAME); xattr_data.last_fname = get_pool_memory(PM_FNAME); read_records(dcr, record_cb, mount_next_read_volume); /* If output file is still open, it was the last one in the * archive since we just hit an end of file, so close the file. */ if (is_bopen(&bfd)) { set_attributes(jcr, attr, &bfd); } free_attr(attr); free_pool_memory(acl_data.last_fname); free_pool_memory(xattr_data.last_fname); clean_device(jcr->dcr); dev->term(); free_dcr(dcr); free_jcr(jcr); printf(_("%u files restored.\n"), num_files); return; }
static void popu_rsa_pub_key() { printf(" #### popu_rsa_pub_key ####\n"); TEE_Result ret; TEE_ObjectHandle rsa_pubkey; size_t key_size = 512; TEE_Attribute *params; size_t param_count = 2; ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_PUBLIC_KEY, key_size, &rsa_pubkey); if (ret == TEE_ERROR_OUT_OF_MEMORY) { printf("Fail: no mem\n"); goto err; } if (ret == TEE_ERROR_NOT_SUPPORTED) { printf("Fail: no sup\n"); goto err; } params = TEE_Malloc(param_count * sizeof(TEE_Attribute), 0); if (params == NULL) goto err; // modulo params[0].attributeID = TEE_ATTR_RSA_MODULUS; params[0].content.ref.buffer = TEE_Malloc(KEY_IN_BYTES(key_size), 0); if (params[0].content.ref.buffer == NULL) goto err; RAND_bytes(params[0].content.ref.buffer, KEY_IN_BYTES(key_size)); params[0].content.ref.length = KEY_IN_BYTES(key_size); // pub exp params[1].attributeID = TEE_ATTR_RSA_PUBLIC_EXPONENT; params[1].content.ref.buffer = TEE_Malloc(KEY_IN_BYTES(key_size), 0); if (params[1].content.ref.buffer == NULL) goto err; RAND_bytes(params[1].content.ref.buffer, KEY_IN_BYTES(key_size)); params[1].content.ref.length = KEY_IN_BYTES(key_size); ret = TEE_PopulateTransientObject(rsa_pubkey, params, param_count); if (ret != TEE_SUCCESS) { printf("Fail: popu\n"); goto err; } err: free_attr(params, param_count); free(params); TEE_FreeTransientObject(rsa_pubkey); }