IP Library › Granted Patent US 10,255,157
Granted Patent B2
US 10,255,157 · App. 15/650,371 · Granted Apr 9, 2019

Type safe secure logging

Inventors: Thomas M. Kludy (Cooper City, FL); Thomas Hammond (Coconut Creek, FL)
Assignee: Citrix Systems, Inc.
G06F11/3476G06F11/3624G06F11/3636G06F21/6218
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,255,157
App. No.
15/650,371
Granted
Apr 9, 2019
Kind
B2
Abstract

Aspects of the disclosure relate to providing type safe secure logging. A computing platform may receive application code comprising one or more calls to one or more logging methods. Subsequently, the computing platform may compile the application code comprising the one or more calls to the one or more logging methods to produce a compiled software application. During the compiling of the application code comprising the one or more calls to the one or more logging methods, the computing platform may enforce one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods. Thereafter, the computing platform may store the compiled software application. In some embodiments, enforcing the one or more type-based secure logging rules may include allowing logging of one or more predetermined classes of objects.

Claims (55)

1. A method, comprising:

at a computing platform comprising at least one processor, memory, and a communication interface:

receiving, by the at least one processor, application code comprising one or more calls to one or more logging methods;

compiling, by the at least one processor, the application code comprising the one or more calls to the one or more logging methods to produce a compiled software application;

during the compiling of the application code comprising the one or more calls to the one or more logging methods, enforcing, by the at least one processor, one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods; and

storing, by the at least one processor, the compiled software application.

2. The method of claim 1 , comprising:

prior to receiving the application code comprising the one or more calls to the one or more logging methods:

receiving, by the at least one processor, one or more type-safe logging rules;

generating, by the at least one processor, a type-safe secure logging library based on the one or more type-safe logging rules; and

storing, by the at least one processor, the type-safe secure logging library.

3. The method of claim 2 , wherein generating the type-safe secure logging library based on the one or more type-safe logging rules comprises defining one or more classes of objects as being safe for logging.

4. The method of claim 2 , wherein generating the type-safe secure logging library based on the one or more type-safe logging rules comprises defining one or more interfaces for asserting that one or more specific objects are safe for logging.

5. A computing platform, comprising:

at least one processor;

a communication interface communicatively coupled to the at least one processor; and

memory storing computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

receive application code comprising one or more calls to one or more logging methods;

compile the application code comprising the one or more calls to the one or more logging methods to produce a compiled software application;

during the compiling of the application code comprising the one or more calls to the one or more logging methods, enforce one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods; and

store the compiled software application.

6. The computing platform of claim 5 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

prior to receiving the application code comprising the one or more calls to the one or more logging methods:

receive one or more type-safe logging rules;

generate a type-safe secure logging library based on the one or more type-safe logging rules; and

store the type-safe secure logging library.

7. The computing platform of claim 6 , wherein generating the type-safe secure logging library based on the one or more type-safe logging rules comprises defining one or more classes of objects as being safe for logging.

8. The computing platform of claim 6 , wherein generating the type-safe secure logging library based on the one or more type-safe logging rules comprises defining one or more interfaces for asserting that one or more specific objects are safe for logging.

9. The computing platform of claim 6 , wherein generating the type-safe secure logging library based on the one or more type-safe logging rules comprises defining one or more logging methods that only accept one or more safe types of objects for logging data with one or more logging systems.

10. The computing platform of claim 9 , wherein the one or more logging methods defined in the type-safe secure logging library cause the compiled software application to log data with at least one specific logging system when the compiled software application is executed.

11. The computing platform of claim 5 , wherein receiving the application code comprising the one or more calls to the one or more logging methods comprises receiving, via the communication interface, the application code comprising the one or more calls to the one or more logging methods from a first developer computing device.

12. The computing platform of claim 11 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

prior to compiling of the application code comprising the one or more calls to the one or more logging methods, send, via the communication interface, to a second developer computing device, a code review notification.

13. The computing platform of claim 12 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

after sending the code review notification to the second developer computing device:

receive, via the communication interface, from the second developer computing device, a code review request;

responsive to receiving the code review request, send, via the communication interface, to the second developer computing device, the application code comprising the one or more calls to the one or more logging methods;

receive, via the communication interface, from the second developer computing device, code review results information; and

responsive to receiving the code review results information, send, via the communication interface, to the first developer computing device, a code review status notification.

14. The computing platform of claim 13 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

prior to compiling of the application code comprising the one or more calls to the one or more logging methods, receive, via the communication interface, from the first developer computing device, a request to compile the application code comprising the one or more calls to the one or more logging methods.

15. The computing platform of claim 5 , wherein enforcing the one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods comprises allowing logging of one or more predetermined classes of objects.

16. The computing platform of claim 5 , wherein enforcing the one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods comprises:

detecting an attempt to log at least one unsafe type of object; and

in response to detecting the attempt to log the at least one unsafe type of object, generating an error message.

17. The computing platform of claim 5 , wherein enforcing the one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods comprises allowing logging of one or more potentially unsafe types of objects based on the one or more potentially unsafe types of objects being wrapped in a safe-logging wrapper.

18. The computing platform of claim 5 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

send, via the communication interface, to a first developer computing device, the compiled software application.

19. The computing platform of claim 5 , wherein the memory stores additional computer-readable instructions that, when executed by the at least one processor, cause the computing platform to:

push, via the communication interface, to one or more production servers, the compiled software application.

20. One or more non-transitory computer-readable media storing instructions that, when executed by a computing platform comprising at least one processor, memory, and a communication interface, cause the computing platform to:

receive application code comprising one or more calls to one or more logging methods;

compile the application code comprising the one or more calls to the one or more logging methods to produce a compiled software application;

during the compiling of the application code comprising the one or more calls to the one or more logging methods, enforce one or more type-based secure logging rules on the application code comprising the one or more calls to the one or more logging methods; and

store the compiled software application.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2017
From: KLUDY, THOMAS M.; HAMMOND, THOMAS
To: CITRIX SYSTEMS, INC.
Reel/Frame 043010/0197 →
Continuity (1)
Related Publication 20190018750A1 · Jan 17, 2019
Cited By (1)
US 12,579,326