diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2012-11-01 17:59:54 +0100 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2012-11-01 17:59:54 +0100 |
commit | b3d66a8dc5f8660be4e170d7ec4767602d8e4c48 (patch) | |
tree | a3b2f5c777b5709a2c9835265efb57f4256b26ec /src | |
parent | b1a2ebb686d4986fa5e21f1943111f4a922798fa (diff) | |
download | strongswan-b3d66a8dc5f8660be4e170d7ec4767602d8e4c48.tar.bz2 strongswan-b3d66a8dc5f8660be4e170d7ec4767602d8e4c48.tar.xz |
some improvements in tcg_pts_attr_file_meas.c
Diffstat (limited to 'src')
-rw-r--r-- | src/libpts/tcg/tcg_pts_attr_file_meas.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/libpts/tcg/tcg_pts_attr_file_meas.c b/src/libpts/tcg/tcg_pts_attr_file_meas.c index 3cc13be4a..843cde64d 100644 --- a/src/libpts/tcg/tcg_pts_attr_file_meas.c +++ b/src/libpts/tcg/tcg_pts_attr_file_meas.c @@ -144,8 +144,7 @@ METHOD(pa_tnc_attr_t, build, void, first = FALSE; } writer->write_data (writer, measurement); - writer->write_uint16(writer, strlen(filename)); - writer->write_data (writer, chunk_create(filename, strlen(filename))); + writer->write_data16(writer, chunk_create(filename, strlen(filename))); } enumerator->destroy(enumerator); @@ -164,9 +163,9 @@ METHOD(pa_tnc_attr_t, process, status_t, { bio_reader_t *reader; u_int64_t number_of_files; - u_int16_t request_id, meas_len, filename_len; - size_t len; + u_int16_t request_id, meas_len; chunk_t measurement, filename; + size_t len; char buf[BUF_LEN]; status_t status = FAILED; @@ -181,6 +180,7 @@ METHOD(pa_tnc_attr_t, process, status_t, reader->read_uint64(reader, &number_of_files); reader->read_uint16(reader, &request_id); reader->read_uint16(reader, &meas_len); + *offset = PTS_FILE_MEAS_SIZE; this->measurements = pts_file_meas_create(request_id); @@ -191,16 +191,14 @@ METHOD(pa_tnc_attr_t, process, status_t, DBG1(DBG_TNC, "insufficient data for PTS file measurement"); goto end; } - if (!reader->read_uint16(reader, &filename_len)) - { - DBG1(DBG_TNC, "insufficient data for filename length"); - goto end; - } - if (!reader->read_data(reader, filename_len, &filename)) + *offset += meas_len; + + if (!reader->read_data16(reader, &filename)) { DBG1(DBG_TNC, "insufficient data for filename"); goto end; } + *offset += 2 + filename.len; len = min(filename.len, BUF_LEN-1); memcpy(buf, filename.ptr, len); |