Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Sleuthkit
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IRT
Sleuthkit
Commits
08eb2efe
Unverified
Commit
08eb2efe
authored
1 year ago
by
Jayaram Sreevalsan
Committed by
GitHub
1 year ago
Browse files
Options
Downloads
Plain Diff
Merge pull request #2892 from eugene7646/tsk_content_tag_fix_7939
CT-7939 TSK content tag bug fix
parents
8c77c122
4ba14242
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
+45
-16
45 additions, 16 deletions
bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
with
45 additions
and
16 deletions
bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
+
45
−
16
View file @
08eb2efe
...
...
@@ -11994,7 +11994,9 @@ public List<ContentTag> getContentTagsByTagName(TagName tagName) throws TskCoreE
}
/**
* Gets content tags by tag name, for the given data source.
* Gets content tags by tag name, for the given data source. This includes
* looking up all Content objects that have entries in tsk_files, as well as
* all OsAccounts (which do not have entries in tsk_files).
*
* @param tagName The tag name of interest.
* @param dsObjId data source object id
...
...
@@ -12012,17 +12014,35 @@ public List<ContentTag> getContentTagsByTagName(TagName tagName, long dsObjId) t
acquireSingleUserCaseReadLock();
try {
connection = connections.getConnection();
// SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tsk_examiners.login_name
// FROM content_tags as content_tags, tsk_files as tsk_files
// LEFT OUTER JOIN tsk_examiners ON content_tags.examiner_id = tsk_examiners.examiner_id
// WHERE content_tags.obj_id = tsk_files.obj_id
// AND content_tags.tag_name_id = ?
// AND tsk_files.data_source_obj_id = ?
// NOTE: Getting all content tags by tag name for a given data source includes
// looking up all Content objects that have entries in tsk_files, as well as
// all OsAccounts. OsAccounts do not have corresponding entries in tsk_files so we
// have to do a separate query to look them up, and then do a UNION of the results.
// "SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tag_names.tag_set_id, tsk_examiners.login_name "
// + "FROM content_tags "
// + "JOIN tsk_os_accounts acc ON content_tags.obj_id = acc.os_account_obj_id "
// + "JOIN tag_names ON content_tags.tag_name_id = tag_names.tag_name_id "
// + "JOIN tsk_examiners ON content_tags.examiner_id = tsk_examiners.examiner_id "
// + "WHERE content_tags.tag_name_id = ? "
// + "AND acc.os_account_obj_id IN (SELECT os_account_obj_id FROM tsk_os_account_instances WHERE data_source_obj_id = ?) "
// + "AND acc.db_status = " + OsAccount.OsAccountDbStatus.ACTIVE.getId()
// + " UNION "
// + "SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tag_names.tag_set_id, tsk_examiners.login_name "
// + "FROM content_tags as content_tags, tsk_files as tsk_files, tag_names as tag_names, tsk_examiners as tsk_examiners "
// + "WHERE content_tags.examiner_id = tsk_examiners.examiner_id "
// + "AND content_tags.obj_id = tsk_files.obj_id "
// + "AND content_tags.tag_name_id = tag_names.tag_name_id "
// + "AND content_tags.tag_name_id = ? "
// + "AND tsk_files.data_source_obj_id = ? "
PreparedStatement statement = connection.getPreparedStatement(PREPARED_STATEMENT.SELECT_CONTENT_TAGS_BY_TAG_NAME_BY_DATASOURCE);
statement.clearParameters();
statement.setLong(1, tagName.getId());
statement.setLong(2, dsObjId);
statement.setLong(3, tagName.getId());
statement.setLong(4, dsObjId);
resultSet = connection.executeQuery(statement);
ArrayList<ContentTag> tags = new ArrayList<ContentTag>();
while (resultSet.next()) {
...
...
@@ -13214,14 +13234,23 @@ private enum PREPARED_STATEMENT {
SELECT_CONTENT_TAGS_BY_TAG_NAME("SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tsk_examiners.login_name "
+ "FROM content_tags "
+ "LEFT OUTER JOIN tsk_examiners ON content_tags.examiner_id = tsk_examiners.examiner_id "
+ "WHERE tag_name_id = ?"), //NON-NLS
SELECT_CONTENT_TAGS_BY_TAG_NAME_BY_DATASOURCE("SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tsk_examiners.login_name, tag_names.tag_set_id "
+ "FROM content_tags as content_tags, tsk_files as tsk_files, tag_names as tag_names, tsk_examiners as tsk_examiners "
+ "WHERE content_tags.examiner_id = tsk_examiners.examiner_id"
+ " AND content_tags.obj_id = tsk_files.obj_id"
+ " AND content_tags.tag_name_id = tag_names.tag_name_id"
+ " AND content_tags.tag_name_id = ?"
+ " AND tsk_files.data_source_obj_id = ? "),
+ "WHERE tag_name_id = ?"), //NON-NLS
SELECT_CONTENT_TAGS_BY_TAG_NAME_BY_DATASOURCE("SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tag_names.tag_set_id, tsk_examiners.login_name "
+ "FROM content_tags "
+ "JOIN tsk_os_accounts acc ON content_tags.obj_id = acc.os_account_obj_id "
+ "JOIN tag_names ON content_tags.tag_name_id = tag_names.tag_name_id "
+ "JOIN tsk_examiners ON content_tags.examiner_id = tsk_examiners.examiner_id "
+ "WHERE content_tags.tag_name_id = ? "
+ "AND acc.os_account_obj_id IN (SELECT os_account_obj_id FROM tsk_os_account_instances WHERE data_source_obj_id = ?) "
+ "AND acc.db_status = " + OsAccount.OsAccountDbStatus.ACTIVE.getId()
+ " UNION "
+ "SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tag_names.tag_set_id, tsk_examiners.login_name "
+ "FROM content_tags as content_tags, tsk_files as tsk_files, tag_names as tag_names, tsk_examiners as tsk_examiners "
+ "WHERE content_tags.examiner_id = tsk_examiners.examiner_id "
+ "AND content_tags.obj_id = tsk_files.obj_id "
+ "AND content_tags.tag_name_id = tag_names.tag_name_id "
+ "AND content_tags.tag_name_id = ? "
+ "AND tsk_files.data_source_obj_id = ? "), //NON-NLS
SELECT_CONTENT_TAG_BY_ID("SELECT content_tags.tag_id, content_tags.obj_id, content_tags.tag_name_id, content_tags.comment, content_tags.begin_byte_offset, content_tags.end_byte_offset, tag_names.display_name, tag_names.description, tag_names.color, tag_names.knownStatus, tsk_examiners.login_name, tag_names.tag_set_id, tag_names.rank "
+ "FROM content_tags "
+ "INNER JOIN tag_names ON content_tags.tag_name_id = tag_names.tag_name_id "
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment