| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Make libproxy-private static, non-installed
|
| | |
|
|\ \
| |/
| | |
Fix indentation in proxy.cpp
|
| | |
|
|\ \
| |/
| | |
Re-add symbol versions, commit 2fb80a0
|
| | |
|
|\ \
| |/
| | |
Dbusify
|
| |\
|/ / |
|
| |\
| | |
| | | |
Typo
|
| |/ |
|
| | |
|
| |\
| | |
| | | |
python: Do not load the libc anymore
|
| |/
| |
| |
| |
| | |
This is not needed since the addition of px_proxy_factory_free_proxies()
in d52cc34458b1d6a524df12db2671fa3a15892fcf
|
| |\
| | |
| | | |
python bindings: fix "TypeError: _argtypes_ must be a sequence of types"
|
| |/
| |
| |
| | |
Fixes #125
|
| |\
| | |
| | | |
Include cerrno
|
| |/
| |
| |
| | |
Include cerrno header for errno and EINTR.
|
| |\
| | |
| | | |
Release: 0.4.16
|
| |/ |
|
| |\
| | |
| | | |
Fix buffer overflow when PAC is enabled
|
| | |
| | |
| | |
| | |
| | |
| | | |
The bug was found on Windows 10 (MINGW64) when PAC is enabled. It turned
out to be the large PAC file (more than 102400 bytes) returned by a
local proxy program with no content-length present.
|
| |\ \
| | | |
| | | | |
python: Convert URLs to/from UTF-8 under Python 3
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In Python 3, strings are Unicode (UTF-16 or UTF-32 depending on build
options), and are passed to ctypes function wrappers as such.
Convert the input URL to a bytestring for processing by libproxy, and
convert the results back into (Unicode) strings by decoding them.
From the pacrunner_webkit module, it appears that libproxy expects
strings to be in UTF-8 (like GLib/GTK), so use that encoding for
bytestrings.
Fixes: #65
|
| |\ \ \
| | | | |
| | | | | |
Remove nonfunctional and crashy pacrunner caching
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
libproxy currently attempts to cache pacrunner objects in the pr member
variable of its pacrunner_extension object. This is broken, though,
because it relies on the pacrunner object also being stored in
pacrunner_extension's last member variable, which is never written to.
So that caching has never worked properly. In practice, it only does one
thing: it causes a threadsafety bug, #68, because it causes the old
pacrunner object to be deleted on the thread that is creating the new
pacrunner, which is illegal for both the mozjs and WebKit-based
pacrunner extensions that expect their objects to be deleted on the same
thread they were created on.
This patch was originally written by Dan Winship for Fedora 19. It got
dropped in Fedora 24, then resurrected again for Fedora 28 after we
noticed 30,000 crash reports. I've tweaked it a bit to completely
remove the unused member variables.
Finally, note that this code is not exception-safe: if an exception is
thrown, the pacrunner could be leaked. But this seems to be a common
problem throughout libproxy. It should be fixed by using std::unique_ptr
instead of raw new and delete.
https://bugzilla.redhat.com/show_bug.cgi?id=998232
Fixes #68
|
| |\ \ \ \
| | | | | |
| | | | | | |
Disable mozjs extension by default
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
mozjs doesn't have a stable API, so distros wind up carrying a bunch of
patches to make it work with newer mozjs. Crashes ensue if it gets
linked into gjs applications and the versions don't match. There's
really no benefit to using this over the WebKit extension, so let's
nudge distros towards using that instead.
Distros: don't wait for this commit, go ahead and build with
-DWITH_MOZJS=OFF today to use the WebKit backend instead.
|
| |\ \ \ \
| | | | | |
| | | | | | |
Never use system libmodman
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I was very surprised to discover that libmodman is a system library.
It's packaged separately from libproxy in distros (I checked Fedora and
openSUSE), and libproxy's build system does not install its files, but
libproxy nonetheless appears to be the only upstream. Distros build the
system library from a decade-old tarball.
Anyway, nothing besides libproxy uses it, so the system package should
probably be retired. By using our own internal libmodman, we can make
API and ABI changes to modernize libmodman and improve its safety,
without having to worry about other consumers (which don't exist,
anyway).
Fixes #140
|
| |\ \ \ \
| | |/ / /
| |/| | | |
Fix mismatched new[]/delete[] in proxy.cpp
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Using the wrong delete operator is undefined behavior.
All this manual new/delete really ought to be replaced by
std::unique_ptr, but this will suffice for now.
|
| |\ \ \
| | | | |
| | | | | |
Enable building in Visual Studio 2019 without mingw.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
While working on c37a4f92, I noticed that there were multiple `#ifdef WIN32` statements that seemed to include duplicated defines. Did the cleanup work to combine these into a single `#ifdef`
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | | |
Following the pattern found here: https://github.com/libproxy/libproxy/blob/d6990f4aaab4b947a490ab1abfd9ac6e62d66d7a/libproxy/url.cpp#L23, This commit uses the _popen and _pclose functions from windows `stdio.h` (included in the existing code via `<cstdio>` on windows builds).
- https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/popen-wpopen?view=vs-2019
- https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/pclose?view=vs-2019
|
| |\ \ \
| | | | |
| | | | | |
Remove dynamic exception specifications
|
| | |/ /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
C++98 called and it wants its dynamic exception specifications back!
We'd better comply.
https://en.cppreference.com/w/cpp/language/except_spec
Fixes #127
|
| |\ \ \
| | | | |
| | | | | |
Rewrite url::recvline to be nonrecursive
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This function processes network input. It's semi-trusted, because the
PAC ought to be trusted. But we still shouldn't allow it to control how
far we recurse. A malicious PAC can cause us to overflow the stack by
sending a sufficiently-long line without any '\n' character.
Also, this function failed to properly handle EINTR, so let's fix that
too, for good measure.
Fixes #134
|
| |\ \ \ \
| | |/ / /
| |/| | | |
Parse the windows bypass list
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
Converts the windows registry bypass list from semi-colon delimited to comma delimited
Returns the full list of bypass urls
|
| |\ \ \
| | |/ /
| |/| | |
Stop defining _BSD_SOURCE
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It's not needed here and has been deprecated for a long time. Fixes:
[ 82%] Building CXX object libproxy/CMakeFiles/config_kde.dir/modules/config_kde.cpp.o
In file included from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from /home/mcatanzaro/Projects/libproxy/utils/proxy.c:21:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
|
| |\ \
| | | |
| | | | |
mozjs: Avoid use-after-free
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If we don't assign the temporary std::string returned by
url_.to_string() to a variable, then it immediately goes out of scope
and is freed, resulting in the result of c_str() pointing into freed
memory. This works about as well as you would expect.
Signed-off-by: Simon McVittie <smcv@debian.org>
|
| |\ \ \
| | | | |
| | | | | |
Fix race conditions in GSettings backend
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If we haven't polled the pxgsettings helper for a while, there might
be more proxy configuration updates in the pipe than will fit in a
single read() call.
Signed-off-by: Simon McVittie <smcv@debian.org>
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously, the gsettings (gnome3) module would wait until it had read
at least one key/value pair for each GSettings schema requested on the
command line. However, GSettings schemas often contain more than one
key. With a relatively elaborate proxy configuration, we don't
necessarily read all of them in one read() from the pipe, resulting in
the full configuration not being read until later - but for proxy(1),
"later" is too late, because it exits after the first query.
To resolve this, add a way for pxgsettings to signal that it has
written all the initial values (a blank line), and wait for that.
Fixes: #116
Signed-off-by: Simon McVittie <smcv@debian.org>
|
| |\ \ \
| | |_|/
| |/| | |
cmake: fix generate-time warning
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit fixes the following warning:
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
|