fix output of listen and setopts commands The listen and setopts commands have broken encodings because the tmp stream they use to handle diverging from the other commands has does not set its write position to to the end of the copied data. Instead the write head is set to the beginning so that when the new data for the command is written it overwrites the begging of the command instead of appending to it.
Signed-off-by: John Johansen <john.johan...@canonical.com> --- === modified file 'parser/af_unix.cc' --- parser/af_unix.cc 2014-08-30 05:32:14 +0000 +++ parser/af_unix.cc 2014-08-31 02:09:00 +0000 @@ -316,7 +312,7 @@ */ int unix_rule::gen_policy_re(Profile &prof) { - std::ostringstream buffer, tmp; + std::ostringstream buffer; std::string buf; int mask = mode; @@ -371,7 +367,8 @@ } if (mask & AA_NET_LISTEN) { - tmp.str(buffer.str()); + std::ostringstream tmp(buffer.str()); + tmp.seekp(0, ios_base::end); tmp << "\\x" << std::setfill('0') << std::setw(2) << std::hex << CMD_LISTEN; /* TODO: backlog conditional: for now match anything*/ tmp << ".."; @@ -383,7 +380,8 @@ goto fail; } if (mask & AA_NET_OPT) { - tmp.str(buffer.str()); + std::ostringstream tmp(buffer.str()); + tmp.seekp(0, ios_base::end); tmp << "\\x" << std::setfill('0') << std::setw(2) << std::hex << CMD_OPT; /* TODO: sockopt conditional: for now match anything */ tmp << ".."; -- AppArmor mailing list AppArmor@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor