Exemple #1
0
/* call 'func' with information about this MIME-part */
static gboolean
handle_message_part (MuMsg *msg, GMimeMessagePart *mmsg, GMimeObject *parent,
		     MuMsgOptions opts, unsigned index,
		     MuMsgPartForeachFunc func, gpointer user_data)
{
	MuMsgPart msgpart;
	memset (&msgpart, 0, sizeof(MuMsgPart));

	msgpart.type        = "message";
	msgpart.subtype     = "rfc822";
	msgpart.index       = index;

	/* msgpart.size        = 0; /\* maybe calculate this? *\/ */

	msgpart.part_type  = MU_MSG_PART_TYPE_MESSAGE;
	msgpart.part_type |= get_disposition ((GMimeObject*)mmsg);

	msgpart.data        = (gpointer)mmsg;

	func (msg, &msgpart, user_data);

	if (opts & MU_MSG_OPTION_RECURSE_RFC822)
		return handle_children
			(msg, g_mime_message_part_get_message (mmsg),
			 opts, index, func, user_data);

	return TRUE;
}
Exemple #2
0
void main_loop()
{
	regenerate();
	if (do_specific_syscall == 1)
		regenerate_random_page();

	while (1) {
		fork_children();
		handle_children();

		/* Only check taint if it was zero on startup */
		if (do_check_tainted == 0) {
			if (check_tainted() != 0) {
				output("kernel became tainted!\n");
				exit(EXIT_FAILURE);
			}
		}

		if (syscallcount && (shm->execcount >= syscallcount))
			exit(EXIT_SUCCESS);

		if (shm->execcount % 1000 == 0)
			synclogs();
	}
}
Exemple #3
0
gboolean
mu_msg_part_foreach (MuMsg *msg, MuMsgOptions opts,
		     MuMsgPartForeachFunc func, gpointer user_data)
{
	GMimeMessage *mime_msg;
	unsigned idx;

	g_return_val_if_fail (msg, FALSE);

	if (!mu_msg_load_msg_file (msg, NULL))
		return FALSE;

	idx = 0;
	mime_msg = GMIME_MESSAGE(msg->_file->_mime_msg);

	return handle_children (msg, mime_msg, opts, idx, func, user_data);
}
Exemple #4
0
char*
mu_msg_part_get_text (MuMsg *msg, MuMsgPart *self, MuMsgOptions opts)
{
	GMimeObject  *mobj;
	GMimeMessage *mime_msg;
	gboolean err;

	g_return_val_if_fail (msg, NULL);
	g_return_val_if_fail (self && self->data, NULL);

	mobj = (GMimeObject*)self->data;

	err = FALSE;
	if (GMIME_IS_PART (mobj)) {
		if (self->part_type & MU_MSG_PART_TYPE_TEXT_PLAIN)
			return mu_msg_mime_part_to_string ((GMimePart*)mobj, &err);
		else
			return NULL; /* non-text MimePart */
	}

	mime_msg = NULL;
	if (GMIME_IS_MESSAGE_PART (mobj))
		mime_msg = g_mime_message_part_get_message
			((GMimeMessagePart*)mobj);
	else if (GMIME_IS_MESSAGE (mobj))
		mime_msg = (GMimeMessage*)mobj;

	if (mime_msg) {
		GString *gstr;
		gstr = g_string_sized_new (4096);
		handle_children (msg, mime_msg, opts, self->index,
 				 (MuMsgPartForeachFunc)accumulate_text,
				 &gstr);
		return g_string_free (gstr, FALSE);
	} else {
		g_warning ("%s: cannot get text for %s",
			   __FUNCTION__, G_OBJECT_TYPE_NAME (mobj));
		return NULL;
	}
}