X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust-java-agent%2Fjava%2Flttng-ust-agent-common%2Forg%2Flttng%2Fust%2Fagent%2Fclient%2FSessiondEnableEventCommand.java;h=5b36ac5d10a006c0e2ed1365a83b628f7dd631fe;hb=cbe2ebd686831fdfa657d7096c32fe67da704372;hp=c9183d19d9736d2f2cf3f0fab85239c3b6d3d2dd;hpb=191f4058e264cb662e51ba16134fb03682044a3e;p=lttng-ust.git diff --git a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/SessiondEnableEventCommand.java b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/SessiondEnableEventCommand.java index c9183d19..5b36ac5d 100644 --- a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/SessiondEnableEventCommand.java +++ b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/SessiondEnableEventCommand.java @@ -31,7 +31,7 @@ import org.lttng.ust.agent.session.LogLevelSelector; * @author Alexandre Montplaisir * @author David Goulet */ -class SessiondEnableEventCommand implements ISessiondCommand { +class SessiondEnableEventCommand extends SessiondCommand { /** Fixed event name length. Value defined by the lttng agent protocol. */ private static final int EVENT_NAME_LENGTH = 256; @@ -48,7 +48,7 @@ class SessiondEnableEventCommand implements ISessiondCommand { throw new IllegalArgumentException(); } ByteBuffer buf = ByteBuffer.wrap(data); - buf.order(ByteOrder.LITTLE_ENDIAN); + buf.order(ByteOrder.BIG_ENDIAN); int logLevel = buf.getInt(); int logLevelType = buf.getInt(); logLevelFilter = new LogLevelSelector(logLevel, logLevelType); @@ -58,35 +58,11 @@ class SessiondEnableEventCommand implements ISessiondCommand { buf.get(eventNameBytes); eventName = new String(eventNameBytes).trim(); - /* - * Read the filter string. The buffer contains the length (number of - * bytes), then the bytes themselves. - * - * The length is represented as an unsigned int, but it should never - * be greater than Integer.MAX_VALUE. - */ - int filterStringLength = buf.getInt(); - if (filterStringLength < 0) { - /* - * The (unsigned) length is above what the sessiond should send. The - * command cannot be processed. - */ - filterString = null; - commandIsValid = false; - return; - } - if (filterStringLength == 0) { - /* There is explicitly no filter string */ - filterString = ""; - commandIsValid = true; - return; - } - - byte[] filterStringBytes = new byte[filterStringLength]; - buf.get(filterStringBytes); - filterString = new String(filterStringBytes).trim(); + /* Read the filter string */ + filterString = readNextString(buf); - commandIsValid = true; + /* The command was invalid if the string could not be read correctly */ + commandIsValid = (filterString != null); } @Override