示例#1
0
namespace arena_detail {

void free_marker_dtor(void*) {
}
void array_of_primitives_dtor(void*) {
}

static size_t seed_from_heap_memory() {
	size_t const len = 64*1024 / sizeof(size_t);
	size_t * const mem = new size_t[len];
	size_t seed = reinterpret_cast<size_t>(mem);
	
	for(size_t i=0; i<len; i++) {
		seed ^= mem[i];
	}
	
	delete[] mem;
	return seed;
}

static size_t make_strong_seed() {
	size_t seed = 0;
	seed ^= seed_from_heap_memory();
	//TODO add more seed sources	
	return seed;
}

static size_t init_cookie() {
	boost::mt19937 gen;
	static size_t seed = 0;
	if(!seed) {
		seed = make_strong_seed();
	} else {
		seed++;
	}

	gen.seed(seed);
	boost::uniform_int<size_t> dist(0, std::numeric_limits<size_t>::max());

	size_t const cookie = dist(gen);
	
	return cookie;
}

static int invalid_addr_reference;
size_t const ptr_sec::_checksum_cookie = init_cookie();
void * const ptr_sec::_xor_cookie = reinterpret_cast<void*>(init_cookie());
void * const ptr_sec::_invalid_addr = &invalid_addr_reference;
//warning: initialization order is important here
dtor_fptr const free_marker_dtor_xor = ptr_sec::xor_ptr(&free_marker_dtor);
dtor_fptr const array_of_primitives_dtor_xor = ptr_sec::xor_ptr(&array_of_primitives_dtor);



} //namespace arena_detail
示例#2
0
文件: dialogs.c 项目: rkd77/elinks-tv
static widget_handler_status_T
push_add_button(struct dialog_data *dlg_data, struct widget_data *button)
{
    struct listbox_data *box = get_dlg_listbox_data(dlg_data);
    struct terminal *term = dlg_data->win->term;
    struct cookie *new_cookie;
    struct cookie_server *server;

    if (!box->sel || !box->sel->udata) return EVENT_PROCESSED;

    if (box->sel->type == BI_FOLDER) {
        assert(box->sel->depth == 0);
        server = (struct cookie_server *)box->sel->udata;
    } else {
        struct cookie *cookie = (struct cookie *)box->sel->udata;

        server = cookie->server;
    }

    object_lock(server);	/* ref consumed by init_cookie */

    new_cookie = init_cookie(stracpy((const unsigned char *)"") /* name */,
                             stracpy((const unsigned char *)"") /* value */,
                             stracpy((const unsigned char *)"/") /* path */,
                             stracpy(server->host) /* domain */,
                             server);
    if (!new_cookie) return EVENT_PROCESSED;

    accept_cookie(new_cookie);
    build_edit_dialog(term, new_cookie);
    return EVENT_PROCESSED;
}
示例#3
0
PyObject *init_guava(void) {
  PyObject *guava_module = NULL;
  PyObject *request_module = NULL;
  PyObject *server_module = NULL;
  PyObject *handler_module = NULL;
  PyObject *controller_module = NULL;
  PyObject *router_module = NULL;
  PyObject *session_module = NULL;
  PyObject *cookie_module = NULL;

  PyEval_InitThreads();

  guava_module = Py_InitModule("guava", NULL);

  request_module = init_request();
  if (!register_module(guava_module, "request", request_module)) {
    return NULL;
  }

  server_module = init_server();
  if (!register_module(guava_module, "server", server_module)) {
    return NULL;
  }

  handler_module = init_handler();
  if (!register_module(guava_module, "handler", handler_module)) {
    return NULL;
  }

  router_module = init_router();
  if (!register_module(guava_module, "router", router_module)) {
    return NULL;
  }

  controller_module = init_controller();
  if (!register_module(guava_module, "controller", controller_module)) {
    return NULL;
  }

  session_module = init_session();
  if (!register_module(guava_module, "session", session_module)) {
    return NULL;
  }

  cookie_module = init_cookie();
  if (!register_module(guava_module, "cookie", cookie_module)) {
    return NULL;
  }

  PyModule_AddStringConstant(guava_module, "version", GUAVA_VERSION);

  return guava_module;
}
示例#4
0
文件: dialogs.c 项目: rkd77/elinks-tv
/* Called by ok_dialog for the "OK" button in the "Add Server" dialog.
 * The data parameter points to the buffer used by the server name
 * widget.  */
static void
add_server_do(void *data)
{
    unsigned char *value = (unsigned char *)data;
    struct cookie *dummy_cookie;

    if (!value) return;

    dummy_cookie = init_cookie(stracpy((const unsigned char *)"empty") /* name */,
                               stracpy((const unsigned char *)"1") /* value */,
                               stracpy((const unsigned char *)"/") /* path */,
                               stracpy(value) /* domain */,
                               get_cookie_server(value, strlen((const char *)value)));
    if (!dummy_cookie) return;

    accept_cookie(dummy_cookie);
}