IP Library Granted Patent US 12,730,902
Granted Patent B2
US 12,730,902 · App. 19/403,148 · Granted Sep 8, 2026

Determining a minimum number of changes to make to an older version based on subsequent fix commit(s)

Inventors: Henrik Plate (Valbonne, FR); Sebastian Cai (Palo Alto, CA); Alexandre Wilhelm (Kilauea, HI)
Assignee: Endor Labs Inc
G06F21/577G06F21/6218G06F21/552G06F21/565G06F21/70G06F2221/033
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 12,730,902
App. No.
19/403,148
Granted
Sep 8, 2026
Kind
B2
Abstract

In some implementations, a computing device determines that project code in a development system references an older version of a component in a third-party library, determines that the older version of the component has a vulnerability, determines that a newer version of the component in the third-party library addresses the vulnerability, determines code changes associated with the fix commit, determines a subset of the code changes associated with the fix commit that addresses the vulnerability, creates a patch based on the subset of the code changes associated with the fix commit, and applies the patch to the older version of the component to create a patched component. The subset of the code changes is determined by identifying a minimum amount of code that addresses the vulnerability and provides support for the fix commit.

Claims (75)

1 . A computer-implemented method comprising:

determining, by one or more processors, that project code in a development system references an older version of a component in a third-party library;

determining, by the one or more processors, that the older version of the component has a vulnerability;

determining, by the one or more processors, that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining, by the one or more processors, code changes associated with the fix commit;

determining, by the one or more processors, a subset of the code changes associated with the fix commit that addresses the vulnerability in the older version of the component, by:

determining a fix commit history associated with the component in the third-party library;

determining, based on the fix commit history, a set of fix commits that address the vulnerability;

ordering the set of fix commits, based on a commit date associated with individual fix commits in the set of fix commits, to create an ordered set of fix commits;

determining file specific changes associated with individual fix commits in the ordered set of fix commits; and

based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes;

creating, by the one or more processors, a patch based on the subset of the code changes associated with the fix commit;

applying, by the one or more processors, the patch to the older version of the component to create a patched component;

validating the patch by the one or more processors; and

based on successfully validating the patch, uploading, by the one or more processors, the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

2 . The computer-implemented method of claim 1 , further comprising: performing change impact analysis on the patched component; determining, based on the change impact analysis, that the patch introduces a breaking change: modifying the patch to create a modified patch; and performing the change impact analysis using the modified patch .

3 . The computer-implemented method of claim 1 , wherein the file specific changes comprise: a context; one or more deleted lines; one or more added lines; or any combination thereof.

4 . The computer-implemented method of claim 1 , further comprising: based on determining that the file specific changes cannot be successfully applied to the project code, determining additional commits in the fix commit history that touch a particular file associated with the file specific changes; ordering the additional fix commits, based on the commit date, to create an ordered set of additional fix commits; determining additional file specific changes associated with individual fix commits in the ordered set of additional fix commits; and based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes.

5 . The computer-implemented method of claim 1 , further comprising: performing change impact analysis on the patched component; and determining, based on the change impact analysis, that the patched component does not introduce a breaking change.

6 . The computer-implemented method of claim 1 , further comprising: submitting a pull request to create a branch in a developer platform.

7 . The computer-implemented method of claim 6 , wherein: creating the patch based on the subset of the code changes associated with the fix commit is performed in the branch; applying the patch to the older version of the component to create the patched component is performed in the branch; and validating the patch is performed in the branch.

8 . A server comprising:

one or more processors; and

one or more non-transitory computer readable media storing instructions executable by the one or more processors to perform operations comprising:

determining that project code in a development system references an older version of a component in a third-party library;

determining that the older version of the component has a vulnerability;

determining that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining code changes associated with the fix commit;

determining a subset of the code changes associated with the fix commit that addresses the vulnerability in the older version of the component by:

determining a fix commit history associated with the component in the third-party library;

determining, based on the fix commit history, a set of fix commits that address the vulnerability;

ordering the set of fix commits, based on a commit date associated with individual fix commits in the set of fix commits, to create an ordered set of fix commits;

determining file specific changes associated with individual fix commits in the ordered set of fix commits; and

based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes;

creating a patch based on the subset of the code changes associated with the fix commit;

applying the patch to the older version of the component to create a patched component;

validating the patch; and

based on successfully validating the patch, building and uploading the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

9 . The server of claim 8 , the operations further comprising:

submitting a pull request to create a branch in a developer platform:

creating, in the branch, the patch based on the subset of the code changes associated with the fix commit;

applying, in the branch, the patch to the older version of the component to create the patched component; and

validating, in the branch, the patch .

10 . The server of claim 8 , wherein the file specific changes comprise: a context; one or more deleted lines; one or more added lines; or any combination thereof.

11 . The server of claim 8 , the operations further comprising: based on determining that the file specific changes cannot be successfully applied to the project code, determining additional commits in the fix commit history that touch a particular file associated with the file specific changes; ordering the additional fix commits, based on the commit date, to create an ordered set of additional fix commits; determining additional file specific changes associated with individual fix commits in the ordered set of additional fix commits and based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes.

12 . The server of claim 8 , wherein validating the patch comprises: executing a set of test cases on a first build that includes the older version of the component to create first test results; determining that the first test results indicate that the set of test cases exploited the vulnerability in the older version of the component; executing the set of test cases on a second build that includes the patched component to create second test results; determining that the second test results indicate that the set of test cases exploited the vulnerability in the patched component; modifying the patch to create a modified patch; executing the set of test cases on a third build that includes the modified patch to create third test results; and determining that the third test results indicate that the set of test cases did not exploit the vulnerability in the modified patch.

13 . The server of claim 8 , wherein the information associated with the patch comprises:

information identifying the older version of the component in the third-party library;

information identifying the vulnerability;

information identifying one or more files that are used;

information related to a build file;

information related to one or more build options;

one or more configuration details; or

any combination thereof.

14 . The server of claim 8 , the operations further comprising: performing change impact analysis on the patched component; determining, based on the change impact analysis, that the patch introduces a breaking change; modifying the patch to create a modified patch; and performing the change impact analysis using the modified patch.

15 . One or more non-transitory computer readable media capable of storing instructions executable by one or more processors to perform operations comprising:

determining that project code in a development system references an older version of a component in a third-party library;

determining that the older version of the component has a vulnerability;

determining that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining code changes associated with the fix commit;

determining a subset of the code changes associated with the fix commit that addresses the vulnerability in the older version of the component by:

determining a fix commit history associated with the component in the third-party library;

determining, based on the fix commit history, a set of fix commits that address the vulnerability;

ordering the set of fix commits, based on a commit date associated with individual fix commits in the set of fix commits, to create an ordered set of fix commits;

determining file specific changes associated with individual fix commits in the ordered set of fix commits; and

based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes;

creating a patch based on the subset of the code changes associated with the fix commit;

applying the patch to the older version of the component to create a patched component;

validating the patch; and

based on successfully validating the patch, building and uploading the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

16 . The one or more non-transitory computer readable media of claim 15 , the operations further comprising: performing change impact analysis on the patched component; determining, based on the change impact analysis, that the patch introduces a breaking change; modifying the patch to create a modified patch; and performing the change impact analysis using the modified patch .

17 . The one or more non-transitory computer readable media of claim 15 , wherein the file specific changes comprise: a context; one or more deleted lines; one or more added lines; or any combination thereof.

18 . The one or more non-transitory computer readable media of claim 15 , the operations further comprising: based on determining that the file specific changes cannot be successfully applied to the project code, determining additional commits in the fix commit history that touch a particular file associated with the file specific changes; ordering the additional fix commits, based on the commit date, to create an ordered set of additional fix commits; determining additional file specific changes associated with individual fix commits in the ordered set of additional fix commits; and based on determining that the file specific changes can be successfully applied to the project code, including the file specific changes in the subset of the code changes.

19 . The one or more non-transitory computer readable media of claim 15 , the operations further comprising: performing change impact analysis on the patched component; and determining, based on the change impact analysis, that the patched component does not introduce a breaking change.

20 . The one or more non-transitory computer readable media of claim 15 , the operations further comprising: submitting a pull request to create a branch in a developer platform; creating, in the branch, the patch based on the subset of the code changes associated with the fix commit; applying, in the branch, the patch to the older version of the component to create the patched component; and validating, in the branch, the patch.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2025
From: PLATE, HENRIK; CAI, SEBASTIAN; WILHELM, ALEXANDRE
To: ENDOR LABS INC
Reel/Frame 073133/0036 →
Continuity (3)
Continuation 19270079 · Jul 15, 2025
Continuation 19020659 · Jan 14, 2025
Related Publication 20260203415A1 · Jul 16, 2026
References Cited (60)
US 8433687B1 · Pydi · 2013 [cited by applicant]
US 8627327B2 · Dunshea et al. · 2014 [cited by applicant]
US 9064134B1 · Agarwal · 2015 [cited by examiner]
US 10108975B1 · Benner et al. · 2018 [cited by applicant]
US 10169208B1 · Moyes et al. · 2019 [cited by applicant]
US 10565377B1 · Zheng et al. · 2020 [cited by applicant]
US 10917415B2 · Chen · 2021 [cited by applicant]
US 11204690B1 · Hoberman · 2021 [cited by examiner]
US 11544050B1 · Ankit · 2023 [cited by examiner]
US 11586436B1 · Jennings · 2023 [cited by applicant]
US 11704099B1 · Morse et al. · 2023 [cited by applicant]
US 11930013B1 · Zhang et al. · 2024 [cited by applicant]
US 20020097253A1 · Charisius et al. · 2002 [cited by applicant]
US 20040168152A1 · Kramer · 2004 [cited by applicant]
US 20050055565A1 · Fournet et al. · 2005 [cited by applicant]
US 20070294667A1 · Caceres et al. · 2007 [cited by applicant]
US 20130083030A1 · Fukuda et al. · 2013 [cited by applicant]
US 20140013315A1 · Genevski et al. · 2014 [cited by applicant]
US 20140173574A1 · Schmidt et al. · 2014 [cited by applicant]
US 20140201573A1 · Huang · 2014 [cited by examiner]
US 20150169320A1 · Ahmed et al. · 2015 [cited by applicant]
US 20160253625A1 · Casey · 2016 [cited by applicant]
US 20170206123A1 · Kirkpatrick · 2017 [cited by applicant]
US 20170286099A1 · Wilkinson · 2017 [cited by applicant]
US 20180018459A1 · Zhang et al. · 2018 [cited by applicant]
US 20180239898A1 · Haerterich · 2018 [cited by examiner]
US 20190042233A1 · Majumdar et al. · 2019 [cited by applicant]
US 20190278572A1 · Yoshida et al. · 2019 [cited by applicant]
US 20200053175A1 · Bodman et al. · 2020 [cited by applicant]
US 20200073781A1 · Falko · 2020 [cited by applicant]
US 20200218535A1 · Alomari · 2020 [cited by applicant]
US 20210149667A1 · Watson et al. · 2021 [cited by applicant]
US 20210173621A1 · Fender et al. · 2021 [cited by applicant]
US 20210182037A1 · Hu · 2021 [cited by applicant]
US 20210182391A1 · Plate · 2021 [cited by examiner]
US 20210281597A1 · Guiroux et al. · 2021 [cited by applicant]
US 20220091842A1 · Murray · 2022 [cited by applicant]
US 20220222351A1 · Levin et al. · 2022 [cited by applicant]
US 20220383995A1 · O'Rourke et al. · 2022 [cited by applicant]
US 20230195901A1 · Allen · 2023 [cited by applicant]
US 20230305827A1 · Dai et al. · 2023 [cited by applicant]
US 20230418578A1 · Chen et al. · 2023 [cited by applicant]
US 20240169069A1 · Panicker · 2024 [cited by examiner]
US 20240241963A1 · Wareus · 2024 [cited by examiner]
US 20240370570A1 · Betthauser et al. · 2024 [cited by applicant]
US 20240385823A1 · Hoole · 2024 [cited by examiner]
US 20240411881A1 · Aday et al. · 2024 [cited by applicant]
CA 2900312A1 · 2014 [cited by applicant]
CN 104321782A · 2015 [cited by applicant]
CN 112083945A · 2020 [cited by applicant]
CN 113377431A · 2021 [cited by examiner]
CN 116842522A · 2023 [cited by applicant]
CN 117556432A · 2024 [cited by applicant]
CN 118467790A · 2024 [cited by applicant]
JP 2011053966A · 2011 [cited by applicant]
Barthelemy Dagenais et al., SemDiff: Analysis and Recommendation Support for API Evolution, 2009 [retrieved Aug. 8, 2025], 2009 IEEE 31st International Conference on Software Engineering, pp. 599-602, downloaded from :h… [cited by applicant]
Istvan-Attila CSASZAR and Radu Razvan SLAVESCU (Interactive call graph generation for software projects); pp. 8; Published on IEEE in Nov. 26, 2020. [cited by applicant]
Mehdi Keshani (Scalable Call Graph Constructor for Maven); pp. 3; Published in Mar. 28, 2021. [cited by applicant]
Mehdi Keshani, Georgios Gousios and Sebastian Proksch (Frankenstein: fast and lightweight call graph generation for softwarebuilds); pp. 47; Published in Nov. 16, 2023. [cited by applicant]
Riivo Kikas, Georgios Gousios, Marlon Dumas, and Dietmar Pfahl (Structure and Evolution of Package Dependency Networks)pp. 11; Published on IEEE Jul. 3, 2017. [cited by applicant]