static void truncate_right (u32 w0[4], u32 w1[4], const u32 len)
{
- const u32 tmp = (1 << ((len % 4) * 8)) - 1;
+ const u32 tmp = (1u << ((len % 4) * 8)) - 1;
switch (len / 4)
{
static void truncate_left (u32 w0[4], u32 w1[4], const u32 len)
{
- const u32 tmp = ~((1 << ((len % 4) * 8)) - 1);
+ const u32 tmp = ~((1u << ((len % 4) * 8)) - 1);
switch (len / 4)
{
const u32 in_len1 = in_len - 1;
- const u32 tmp = (1 << ((in_len1 & 3) * 8)) - 1;
+ const u32 tmp = (1u << ((in_len1 & 3) * 8)) - 1;
switch (in_len1 / 4)
{
lshift_block (buf0, buf1, tib40, tib41);
- const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
+ const u32 ml = (1u << ((p0 & 3) * 8)) - 1;
const u32 mr = ~ml;
switch (p0 / 4)
lshift_block_N (buf0, buf1, tib40, tib41, p1);
- const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
+ const u32 ml = (1u << ((p0 & 3) * 8)) - 1;
const u32 mr = ~ml;
switch (p0 / 4)
const u32 p1n = p1 << ((p0 & 3) * 8);
- const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
+ const u32 ml = (1u << ((p0 & 3) * 8)) - 1;
const u32 mr = 0xffffff00 << ((p0 & 3) * 8);
return in_len;
}
-/*
static u32 rule_op_mangle_purgechar (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{
- // TODO
- return in_len;
+ u32 out_len = 0;
+
+ u32 buf_in[8];
+
+ buf_in[0] = buf0[0];
+ buf_in[1] = buf0[1];
+ buf_in[2] = buf0[2];
+ buf_in[3] = buf0[3];
+ buf_in[4] = buf1[0];
+ buf_in[5] = buf1[1];
+ buf_in[6] = buf1[2];
+ buf_in[7] = buf1[3];
+
+ u32 buf_out[8] = { 0 };
+
+ u8 *in = (u8 *) buf_in;
+ u8 *out = (u8 *) buf_out;
+
+ for (u32 pos = 0; pos < in_len; pos++)
+ {
+ if (in[pos] == (u8) p0) continue;
+
+ out[out_len] = in[pos];
+
+ out_len++;
+ }
+
+ buf0[0] = buf_out[0];
+ buf0[1] = buf_out[1];
+ buf0[2] = buf_out[2];
+ buf0[3] = buf_out[3];
+ buf1[0] = buf_out[4];
+ buf1[1] = buf_out[5];
+ buf1[2] = buf_out[6];
+ buf1[3] = buf_out[7];
+
+ return out_len;
}
+/*
static u32 rule_op_mangle_togglecase_rec (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{
// TODO
case RULE_OP_MANGLE_OVERSTRIKE: out_len = rule_op_mangle_overstrike (p0, p1, buf0, buf1, out_len); break;
case RULE_OP_MANGLE_TRUNCATE_AT: out_len = rule_op_mangle_truncate_at (p0, p1, buf0, buf1, out_len); break;
case RULE_OP_MANGLE_REPLACE: out_len = rule_op_mangle_replace (p0, p1, buf0, buf1, out_len); break;
- //case RULE_OP_MANGLE_PURGECHAR: out_len = rule_op_mangle_purgechar (p0, p1, buf0, buf1, out_len); break;
+ case RULE_OP_MANGLE_PURGECHAR: out_len = rule_op_mangle_purgechar (p0, p1, buf0, buf1, out_len); break;
//case RULE_OP_MANGLE_TOGGLECASE_REC: out_len = rule_op_mangle_togglecase_rec (p0, p1, buf0, buf1, out_len); break;
case RULE_OP_MANGLE_DUPECHAR_FIRST: out_len = rule_op_mangle_dupechar_first (p0, p1, buf0, buf1, out_len); break;
case RULE_OP_MANGLE_DUPECHAR_LAST: out_len = rule_op_mangle_dupechar_last (p0, p1, buf0, buf1, out_len); break;