Release v0.1.5.4 prepare for release

This commit is contained in:
Markus committed 2025-08-29 12:08:10 +02:00
1 parent a173c99015
commit 47b36588d3
371 files changed
+84993 -30

No files matched your search

+99
View File
@@ -0,0 +1,99 @@
function next_uncovered(selector, reverse, scroll_selector) {
function visit_element(element) {
element.classList.add("seen");
element.classList.add("selected");
if (!scroll_selector) {
scroll_selector = "tr:has(.selected) td.line-number"
}
const scroll_to = document.querySelector(scroll_selector);
if (scroll_to) {
scroll_to.scrollIntoView({behavior: "smooth", block: "center", inline: "end"});
}
}
function select_one() {
if (!reverse) {
const previously_selected = document.querySelector(".selected");
if (previously_selected) {
previously_selected.classList.remove("selected");
}
return document.querySelector(selector + ":not(.seen)");
} else {
const previously_selected = document.querySelector(".selected");
if (previously_selected) {
previously_selected.classList.remove("selected");
previously_selected.classList.remove("seen");
}
const nodes = document.querySelectorAll(selector + ".seen");
if (nodes) {
const last = nodes[nodes.length - 1]; // last
return last;
} else {
return undefined;
}
}
}
function reset_all() {
if (!reverse) {
const all_seen = document.querySelectorAll(selector + ".seen");
if (all_seen) {
all_seen.forEach(e => e.classList.remove("seen"));
}
} else {
const all_seen = document.querySelectorAll(selector + ":not(.seen)");
if (all_seen) {
all_seen.forEach(e => e.classList.add("seen"));
}
}
}
const uncovered = select_one();
if (uncovered) {
visit_element(uncovered);
} else {
reset_all();
const uncovered = select_one();
if (uncovered) {
visit_element(uncovered);
}
}
}
function next_line(reverse) {
next_uncovered("td.uncovered-line", reverse)
}
function next_region(reverse) {
next_uncovered("span.red.region", reverse);
}
function next_branch(reverse) {
next_uncovered("span.red.branch", reverse);
}
document.addEventListener("keypress", function(event) {
const reverse = event.shiftKey;
if (event.code == "KeyL") {
next_line(reverse);
}
if (event.code == "KeyB") {
next_branch(reverse);
}
if (event.code == "KeyR") {
next_region(reverse);
}
});
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='..\..\..\..\..\..\..\style.css'><script src='..\..\..\..\..\..\..\control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><span class='control'><a href='javascript:next_line()'>next uncovered line (L)</a>, <a href='javascript:next_region()'>next uncovered region (R)</a>, <a href='javascript:next_branch()'>next uncovered branch (B)</a></span><div class='centered'><table><div class='source-name-title'><pre>C:\Users\mbusc\source\repos\privatebin-cpp\src\base58.cpp</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;base58.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;algorithm&gt;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;stdexcept&gt;</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='skipped-line'></td><td class='code'><pre>const std::string Base58::ALPHABET = &quot;123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz&quot;;</pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>std::string Base58::encode(const std::vector&lt;unsigned char&gt;&amp; data) <span class='region red'>{</span></pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> if (</span><span class='region red'>data.empty()</span><span class='region red'>) </span><span class='region red'>{</span></pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> return &quot;&quot;;</span></pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> }</span><span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='skipped-line'></td><td class='code'><pre> </pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='skipped-line'></td><td class='code'><pre> // Skip leading zeros</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> <span class='region red'>size_t leading_zeros = 0;</span></pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> while (</span><span class='region red'>leading_zeros &lt; data.size()</span><span class='region red'> &amp;&amp; </span><span class='region red'>data[leading_zeros] == 0</span><span class='region red'>) </span><span class='region red'>{</span></pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> leading_zeros++;</span></pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> }</span><span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='skipped-line'></td><td class='code'><pre> </pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='skipped-line'></td><td class='code'><pre> // Convert to base58<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> size_t digits_size = (data.size() - leading_zeros) * 138 / 100 + 1;</span></pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> std::vector&lt;unsigned chaLine truncated
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='..\..\..\..\..\..\..\style.css'><script src='..\..\..\..\..\..\..\control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><span class='control'><a href='javascript:next_line()'>next uncovered line (L)</a>, <a href='javascript:next_region()'>next uncovered region (R)</a>, <a href='javascript:next_branch()'>next uncovered branch (B)</a></span><div class='centered'><table><div class='source-name-title'><pre>C:\Users\mbusc\source\repos\privatebin-cpp\src\crypto.cpp</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;crypto.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;random&gt;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;stdexcept&gt;</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cstring&gt;</pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// Crypto++ includes</pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/cryptlib.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/osrng.h&gt; // AutoSeededRandomPool</pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/aes.h&gt; // AES encryption</pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/gcm.h&gt; // GCM mode</pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/pwdbased.h&gt; // PBKDF2</pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/sha.h&gt; // SHA256</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/zlib.h&gt; // Zlib compression</pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='skipped-line'></td><td class='code'><pre>using namespace CryptoPP;</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre>std::vector&lt;unsigned char&gt; Crypto::generate_key(size_t length) {</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> std::vector&lt;unsigned char&gt; key(length);</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='skipped-line'></td><td class='code'><pre> </pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='skipped-line'></td><td class='code'><pre> // Use Crypto++ AutoSeededRandomPool for cryptographically secure random numbers</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> AutoSeededRandomPool rng;</pre></td></tr><tr><td class='line-number'><a name='L22' href='#L22'><pre>22</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> rng.GenerateBlock(key.data(), length);</pre></td></tr><tr><td class='line-number'><a name='L23' href='#L23'><pre>23</pre></a></td><td class='skipped-line'></td><td class='code'><pre> </pre></td></tr><tr><td class='line-number'><a name='L24' href='#L24'><pre>24</pre></a></td><td class='covered-line'><pre>3</pre></td><tdLine truncated
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='..\..\..\..\..\..\..\style.css'><script src='..\..\..\..\..\..\..\control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><span class='control'><a href='javascript:next_line()'>next uncovered line (L)</a>, <a href='javascript:next_region()'>next uncovered region (R)</a>, <a href='javascript:next_branch()'>next uncovered branch (B)</a></span><div class='centered'><table><div class='source-name-title'><pre>C:\Users\mbusc\source\repos\privatebin-cpp\src\http_client.cpp</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;http_client.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;iostream&gt;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;string&gt;</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;sstream&gt;</pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#ifdef WINDOWS</pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;windows.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;winhttp.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#pragma comment(lib, &quot;winhttp.lib&quot;)</pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre>static std::string last_winhttp_error(const char* where) {</pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> DWORD err = GetLastError();</pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> LPVOID lpMsgBuf = nullptr;</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> FormatMessageA(</pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> NULL,</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> err,</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> (LPSTR)&amp;lpMsgBuf,</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> 0, NULL);</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> std::ostringstream os;</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> os &lt;&lt; &quot;[WinHTTP] &quot; &lt;&lt; where &lt;&lt; &quot; failed, error=&quot; &lt;&lt; err;</pre></td></tr><tr><td class='line-number'><a name='L22' href='#L22'><pre>22</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> if (lpMsgBuf) <span class='region red'>{</span></pre></td></tr><tr><td class='line-number'><a name='L23' href='#L23'><pre>23</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre><span class='region red'> os &lt;Line truncated
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='..\..\..\..\..\..\..\style.css'><script src='..\..\..\..\..\..\..\control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><span class='control'><a href='javascript:next_line()'>next uncovered line (L)</a>, <a href='javascript:next_region()'>next uncovered region (R)</a>, <a href='javascript:next_branch()'>next uncovered branch (B)</a></span><div class='centered'><table><div class='source-name-title'><pre>C:\Users\mbusc\source\repos\privatebin-cpp\src\json_parser.cpp</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;json_parser.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;iostream&gt;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;chrono&gt;</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/base64.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/filters.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cryptopp/queue.h&gt;</pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// Helper: Base64 encode without line breaks</pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre>static std::string encode_base64(const std::vector&lt;unsigned char&gt;&amp; data) {</pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> std::string result;</pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> CryptoPP::StringSource ss(</pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> data.data(), data.size(), true,</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> new CryptoPP::Base64Encoder(new CryptoPP::StringSink(result), false /* insertLineBreaks */)</pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> );</pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> return result;</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// Helper: Base64 decode</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre>static std::vector&lt;unsigned char&gt; decode_base64(const std::string&amp; b64) {</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> std::string decoded;</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> CryptoPP::StringSource ss(</pre></td></tr><tr><td class='line-number'><a name='L22' href='#L22'><pre>22</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> b64, true, new CryptoPP::Base64Decoder(new CryptoPP::StringSink(decoded))</pre></td></tr><tr><td class='line-number'><a name='L23' href='#L23'><pre>23</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> );</pre></td></tr><tr><td class='lineLine truncated
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='..\..\..\..\..\..\..\style.css'><script src='..\..\..\..\..\..\..\control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><span class='control'><a href='javascript:next_line()'>next uncovered line (L)</a>, <a href='javascript:next_region()'>next uncovered region (R)</a>, <a href='javascript:next_branch()'>next uncovered branch (B)</a></span><div class='centered'><table><div class='source-name-title'><pre>C:\Users\mbusc\source\repos\privatebin-cpp\src\privatebinapi.cpp</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;privatebinapi.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;http_client.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;crypto.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;json_parser.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &quot;base58.h&quot;</pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;string&gt;</pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;vector&gt;</pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cstring&gt;</pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;cstdlib&gt;</pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;iostream&gt;</pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;fstream&gt;</pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#include &lt;sstream&gt;</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='skipped-line'></td><td class='code'><pre>#define PRIVATEBIN_API_VERSION &quot;1.3&quot;</pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// Error codes</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>#define ERROR_SUCCESS <span class='region red'>0</span></pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre>#define ERROR_NETWORK 1</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>#define ERROR_CRYPTO <span class='region red'>2</span></pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>#define ERROR_INVALID_INPUT <span class='region red'>3</span></pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>#define ERROR_SERVER <span class='region red'>4</span></pre></td></tr><tr><td class='line-number'><a name='L22' href='#L22'><pre>22</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre>#define ERROR_JSON_PARSE <span class='region red'>5</span></pre></td></tr><tr><td class='line-number'><a name='L23' href='#L23'><pre>23</pre></a></td><td class='skipped-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L24' href='#L24'><pre>24</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// Helper function to copy string to output pLine truncated
+1
View File
@@ -0,0 +1 @@
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><link rel='stylesheet' type='text/css' href='style.css'><script src='control.js'></script></head><body><h2>Coverage Report</h2><h4>Created: 2025-08-29 11:28</h4><p>Click <a href='http://clang.llvm.org/docs/SourceBasedCodeCoverage.html#interpreting-reports'>here</a> for information about interpreting this report.</p><div class='centered'><table><tr><td class='column-entry-bold'>Filename</td><td class='column-entry-bold'>Function Coverage</td><td class='column-entry-bold'>Line Coverage</td><td class='column-entry-bold'>Region Coverage</td><td class='column-entry-bold'>Branch Coverage</td></tr><tr class='light-row'><td><pre><a href='coverage\Users\mbusc\source\repos\privatebin-cpp\src\base58.cpp.html'>base58.cpp</a></pre></td><td class='column-entry-red'><pre> 0.00% (0/2)</pre></td><td class='column-entry-red'><pre> 0.00% (0/67)</pre></td><td class='column-entry-red'><pre> 0.00% (0/48)</pre></td><td class='column-entry-red'><pre> 0.00% (0/34)</pre></td></tr><tr class='light-row'><td><pre><a href='coverage\Users\mbusc\source\repos\privatebin-cpp\src\crypto.cpp.html'>crypto.cpp</a></pre></td><td class='column-entry-red'><pre> 66.67% (4/6)</pre></td><td class='column-entry-red'><pre> 56.19% (59/105)</pre></td><td class='column-entry-red'><pre> 36.84% (7/19)</pre></td><td class='column-entry-red'><pre> 0.00% (0/2)</pre></td></tr><tr class='light-row'><td><pre><a href='coverage\Users\mbusc\source\repos\privatebin-cpp\src\http_client.cpp.html'>http_client.cpp</a></pre></td><td class='column-entry-green'><pre> 100.00% (5/5)</pre></td><td class='column-entry-red'><pre> 51.67% (186/360)</pre></td><td class='column-entry-red'><pre> 66.67% (170/255)</pre></td><td class='column-entry-red'><pre> 41.38% (48/116)</pre></td></tr><tr class='light-row'><td><pre><a href='coverage\Users\mbusc\source\repos\privatebin-cpp\src\json_parser.cpp.html'>json_parser.cpp</a></pre></td><td class='column-entry-green'><pre> 100.00% (5/5)</pre></td><td class='column-entry-yellow'><pre> 84.21% (80/95)</pre></td><td class='column-entry-red'><pre> 71.88% (23/32)</pre></td><td class='column-entry-red'><pre> 50.00% (7/14)</pre></td></tr><tr class='light-row'><td><pre><a href='coverage\Users\mbusc\source\repos\privatebin-cpp\src\privatebinapi.cpp.html'>privatebinapi.cpp</a></pre></td><td class='column-entry-red'><pre> 50.00% (3/6)</pre></td><td class='column-entry-red'><pre> 27.01% (57/211)</pre></td><td class='column-entry-red'><pre> 28.15% (38/135)</pre></td><td class='column-entry-red'><pre> 21.43% (15/70)</pre></td></tr><tr class='light-row-bold'><td><pre>Totals</pre></td><td class='column-entry-red'><pre> 70.83% (17/24)</pre></td><td class='column-entry-red'><pre> 45.58% (382/838)</pre></td><td class='column-entry-red'><pre> 48.67% (238/489)</pre></td><td class='column-entry-red'><pre> 29.66% (70/236)</pre></td></tr></table></div><h5>Generated by llvm-cov -- llvm version 21.1.0</h5></body></html>
+194
View File
@@ -0,0 +1,194 @@
.red {
background-color: #f004;
}
.cyan {
background-color: cyan;
}
html {
scroll-behavior: smooth;
}
body {
font-family: -apple-system, sans-serif;
}
pre {
margin-top: 0px !important;
margin-bottom: 0px !important;
}
.source-name-title {
padding: 5px 10px;
border-bottom: 1px solid #8888;
background-color: #0002;
line-height: 35px;
}
.centered {
display: table;
margin-left: left;
margin-right: auto;
border: 1px solid #8888;
border-radius: 3px;
}
.expansion-view {
margin-left: 0px;
margin-top: 5px;
margin-right: 5px;
margin-bottom: 5px;
border: 1px solid #8888;
border-radius: 3px;
}
table {
border-collapse: collapse;
}
.light-row {
border: 1px solid #8888;
border-left: none;
border-right: none;
}
.light-row-bold {
border: 1px solid #8888;
border-left: none;
border-right: none;
font-weight: bold;
}
.column-entry {
text-align: left;
}
.column-entry-bold {
font-weight: bold;
text-align: left;
}
.column-entry-yellow {
text-align: left;
background-color: #ff06;
}
.column-entry-red {
text-align: left;
background-color: #f004;
}
.column-entry-gray {
text-align: left;
background-color: #fff4;
}
.column-entry-green {
text-align: left;
background-color: #0f04;
}
.line-number {
text-align: right;
}
.covered-line {
text-align: right;
color: #06d;
}
.uncovered-line {
text-align: right;
color: #d00;
}
.uncovered-line.selected {
color: #f00;
font-weight: bold;
}
.region.red.selected {
background-color: #f008;
font-weight: bold;
}
.branch.red.selected {
background-color: #f008;
font-weight: bold;
}
.tooltip {
position: relative;
display: inline;
background-color: #bef;
text-decoration: none;
}
.tooltip span.tooltip-content {
position: absolute;
width: 100px;
margin-left: -50px;
color: #FFFFFF;
background: #000000;
height: 30px;
line-height: 30px;
text-align: center;
visibility: hidden;
border-radius: 6px;
}
.tooltip span.tooltip-content:after {
content: '';
position: absolute;
top: 100%;
left: 50%;
margin-left: -8px;
width: 0; height: 0;
border-top: 8px solid #000000;
border-right: 8px solid transparent;
border-left: 8px solid transparent;
}
:hover.tooltip span.tooltip-content {
visibility: visible;
opacity: 0.8;
bottom: 30px;
left: 50%;
z-index: 999;
}
th, td {
vertical-align: top;
padding: 2px 8px;
border-collapse: collapse;
border-right: 1px solid #8888;
border-left: 1px solid #8888;
text-align: left;
}
td pre {
display: inline-block;
text-decoration: inherit;
}
td:first-child {
border-left: none;
}
td:last-child {
border-right: none;
}
tr:hover {
background-color: #eee;
}
tr:last-child {
border-bottom: none;
}
tr:has(> td >a:target), tr:has(> td.uncovered-line.selected) {
background-color: #8884;
}
a {
color: inherit;
}
.control {
position: fixed;
top: 0em;
right: 0em;
padding: 1em;
background: #FFF8;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #222;
color: whitesmoke;
}
tr:hover {
background-color: #111;
}
.covered-line {
color: #39f;
}
.uncovered-line {
color: #f55;
}
.tooltip {
background-color: #068;
}
.control {
background: #2228;
}
tr:has(> td >a:target), tr:has(> td.uncovered-line.selected) {
background-color: #8884;
}
}
Binary file not shown.
Binary file not shown.