mirror of
https://github.com/radareorg/radare2.git
synced 2024-12-04 11:43:39 +00:00
66f7403245
* Reimplement r_buf_fread/fwrite * Add slice buffer and introduce readonly field * Do nothing if size is 0 * Prevents an overflow when 8 is subtracted from size. * Fix ragg2 when patching outside currently existing buffer * Implement r_mem_mmap_resize for systems where mremap is not defined * r_buf_buffer can be called with no size arg as well * Use size_t instead of ut64
62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
/* radare - LGPL - Copyright 2009-2015 - pancake, nibble */
|
|
|
|
#include <r_types.h>
|
|
#include <r_util.h>
|
|
#include <r_bin.h>
|
|
|
|
/* XXX Implement r__bin_wr_scn_{ set, del } instead */
|
|
R_API ut64 r_bin_wr_scn_resize(RBin *bin, const char *name, ut64 size) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
RBinPlugin *plugin = r_bin_file_cur_plugin (binfile);
|
|
if (plugin && plugin->write && plugin->write->scn_resize) {
|
|
return plugin->write->scn_resize (bin->cur, name, size);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
R_API bool r_bin_wr_scn_perms(RBin *bin, const char *name, int perms) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
RBinPlugin *plugin = r_bin_file_cur_plugin (binfile);
|
|
if (plugin && plugin->write && plugin->write->scn_perms) {
|
|
return plugin->write->scn_perms (bin->cur, name, perms);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
R_API bool r_bin_wr_rpath_del(RBin *bin) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
RBinPlugin *plugin = r_bin_file_cur_plugin (binfile);
|
|
if (plugin && plugin->write && plugin->write->rpath_del) {
|
|
return plugin->write->rpath_del (bin->cur);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
R_API bool r_bin_wr_output(RBin *bin, const char *filename) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
if (!filename || !binfile || !binfile->buf) {
|
|
return false;
|
|
}
|
|
ut64 tmpsz;
|
|
const ut8 *tmp = r_buf_data (binfile->buf, &tmpsz);
|
|
return r_file_dump (filename, tmp, tmpsz, 0);
|
|
}
|
|
|
|
R_API bool r_bin_wr_entry(RBin *bin, ut64 addr) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
RBinPlugin *plugin = r_bin_file_cur_plugin (binfile);
|
|
if (plugin && plugin->write && plugin->write->entry) {
|
|
return plugin->write->entry (bin->cur, addr);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
R_API bool r_bin_wr_addlib(RBin *bin, const char *lib) {
|
|
RBinFile *binfile = r_bin_cur (bin);
|
|
RBinPlugin *plugin = r_bin_file_cur_plugin (binfile);
|
|
if (plugin && plugin->write && plugin->write->addlib) {
|
|
return plugin->write->addlib (bin->cur, lib);
|
|
}
|
|
return false;
|
|
}
|